控制和查询当前数值模型#

指数#

名称#

exponent(3) - [MODEL_COMPONENTS] 浮点数的指数

概要#

    result = exponent(x)
     elemental integer function exponent(x)

      real(kind=**),intent(in) :: x

特性#

  • x 应为任何有效种类的实型

  • 结果为默认的整数类型

描述#

exponent(3) 返回x的指数部分的值,前提是指数在默认整数的范围内。

选项#

  • x

    要查询其指数的值

结果#

exponent(3) 返回x的指数部分的值

如果x为零,则返回值为零。

如果x是 IEEE 无穷大或 NaN,则结果值为 HUGE(0)。

示例#

示例程序

program demo_exponent
implicit none
real :: x = 1.0
integer :: i
   i = exponent(x)
   print *, i
   print *, exponent(0.0)
   print *, exponent([10.0,100.0,1000.0,-10000.0])
   print *, 2**[10.0,100.0,1000.0,-10000.0]
   print *, exponent(huge(0.0))
   print *, exponent(tiny(0.0))
end program demo_exponent

结果

 >            4           7          10          14
 >          128
 >         -125

标准#

Fortran 95

另请参阅#

digits(3), epsilon(3), fraction(3), huge(3), maxexponent(3), minexponent(3), nearest(3), precision(3), radix(3), range(3), rrspacing(3), scale(3), set_exponent(3), spacing(3), tiny(3)

fortran-lang 内联函数描述

分数部分#

名称#

fraction(3) - [MODEL_COMPONENTS] 模型表示的分数部分

概要#

    result = fraction(x)
     elemental real(kind=KIND) function fraction(x)

      real(kind=KIND),intent(in) :: fraction

特性#

  • x实型

  • 结果与参数具有相同的特性。

描述#

fraction(3) 返回x的模型表示的分数部分。

选项#

  • x

    要查询的值

结果#

返回x的模型表示的分数部分;它等于x * radix(x)**(-exponent(x))

如果x的值为零,则结果为零。

如果x是 IEEE NaN,则结果为该 NaN。

如果x是 IEEE 无穷大,则结果为 IEEE NaN。

示例#

示例程序

program demo_fraction
implicit none
real :: x
   x = 178.1387e-4
   print *, fraction(x), x * radix(x)**(-exponent(x))
end program demo_fraction

结果

     0.5700439      0.5700439

标准#

Fortran 95

另请参阅#

digits(3), epsilon(3), exponent(3), huge(3), maxexponent(3), minexponent(3), nearest(3), precision(3), radix(3), range(3), rrspacing(3), scale(3), set_exponent(3), spacing(3), tiny(3)

fortran-lang 内联函数描述

最接近的数#

名称#

nearest(3) - [MODEL_COMPONENTS] 最接近的可表示数

概要#

    result = nearest(x, s)
     elemental real(kind=KIND) function nearest(x,s)

      real(kind=KIND),intent(in) :: x
      real(kind=**),intent(in) :: s

特性#

  • x 可以是任何种类的实型值。

  • s 可以是任何种类的实型值。

  • 返回值与x具有相同的类型和种类。

  • 指定为 ** 的种类可以是类型支持的任何种类

描述#

nearest(3) 返回处理器可表示的、在由s的符号指示的方向上最接近x的数。

选项#

  • x

    要查找其最接近可表示值的值

  • s

    一个非零值,其符号用于确定从x到可表示值的搜索方向。

    如果s为正,则nearest返回大于x且最接近它的处理器可表示数。

    如果s为负,则nearest返回小于x且最接近它的处理器可表示数。

结果#

返回值与x的类型相同。如果s为正,则nearest返回大于x且最接近它的处理器可表示数。如果s为负,则nearest返回小于x且最接近它的处理器可表示数。

示例#

示例程序

program demo_nearest
implicit none

   real :: x, y
   x = nearest(42.0, 1.0)
   y = nearest(42.0, -1.0)
   write (*,"(3(g20.15))") x, y, x - y

!  write (*,"(3(g20.15))") &
!   nearest(tiny(0.0),1.0), &
!   nearest(tiny(0.0),-1.0), &
!   nearest(tiny(0.0),1.0) -nearest(tiny(0.0),-1.0)

!  write (*,"(3(g20.15))") &
!   nearest(huge(0.0),1.0), &
!   nearest(huge(0.0),-1.0), &
!   nearest(huge(0.0),1.0)- nearest(huge(0.0),-1.0)

end program demo_nearest

结果

   42.0000038146973    41.9999961853027    .762939453125000E-05

标准#

Fortran 95

另请参阅#

digits(3), epsilon(3), exponent(3), fraction(3), huge(3), maxexponent(3), minexponent(3), precision(3), radix(3), range(3), rrspacing(3), scale(3), set_exponent(3), spacing(3), tiny(3)

fortran-lang 内联函数描述

相对间距的倒数#

名称#

rrspacing(3) - [MODEL_COMPONENTS] 数值类型的相对间距的倒数

概要#

    result = rrspacing(x)
     elemental real(kind=KIND) function rrspacing(x)

      real(kind=KIND),intent(in) :: x

特性#

  • x 为任何种类的实型

  • 返回值与x具有相同的类型和种类。

描述#

rrspacing(3) 返回靠近x的模型数的相对间距的倒数。

选项#

  • x

    应为实型

结果#

返回值与x的类型和种类相同。返回值等于abs(fraction(x)) * float(radix(x))**digits(x)

标准#

Fortran 95

另请参阅#

digits(3)epsilon(3)exponent(3)fraction(3)huge(3)maxexponent(3)minexponent(3)nearest(3)precision(3)radix(3)range(3)scale(3)set_exponent(3)spacing(3)tiny(3)

fortran-lang 内联函数描述

scale#

名称#

scale(3) - [MODEL_COMPONENTS] 将实数值按基数的整数次幂进行缩放

概要#

    result = scale(x, i)
     elemental real(kind=KIND) function scale(x, i)

      real(kind=KIND),intent(in)   :: x
      integer(kind=**),intent(in)  :: i

特征#

  • x 为任意类型的实数

  • i 为任意类型的整数

  • 结果为与x相同类型的实数

描述#

scale(3) 返回 x * radix(x)**i

平台的基数几乎可以肯定为二,因此scale(3) 通常与x*2**i相同。

选项#

  • x

    要乘以radix(x)**i的值。其类型和种类用于确定具有其特征的值的基数,并确定结果的特征,因此必须注意返回的值在x的特征范围内。

  • i

    将机器的基数提升到的幂

结果#

返回值为x * radix(x)**i,假设该值可以用x的类型和种类表示。

示例#

示例程序

program demo_scale
implicit none
real :: x = 178.1387e-4
integer :: i = 5
   print *, scale(x,i), x*radix(x)**i
end program demo_scale

结果

    0.570043862      0.570043862

标准#

Fortran 95

另请参见#

digits(3)epsilon(3)exponent(3)fraction(3)huge(3)maxexponent(3)minexponent(3)nearest(3)precision(3)radix(3)range(3)rrspacing(3)set_exponent(3)spacing(3)tiny(3)

fortran-lang 内在描述 (许可证:MIT) @urbanjost

set_exponent#

名称#

set_exponent(3) - [MODEL_COMPONENTS] 具有指定指数的实数值

概要#

    result = set_exponent(x, i)
     elemental real(kind=KIND) function set_exponent(x,i)

      real(kind=KIND),intent(in) :: x
      integer(kind=**),intent(in) :: i

特征#

  • x实数类型

  • i整数类型

  • 指定为 ** 的种类可以是类型支持的任何种类

  • 返回值与x具有相同的类型和种类。

描述#

set_exponent(3) 返回一个实数,其小数部分与x相同,指数部分为i

选项#

  • x

    应为实型

  • i

    应为整数类型。

结果#

返回值与x具有相同的类型和种类。返回一个小数部分与x相同且指数部分为i的实数;它是fraction(x) * radix(x)**i

如果x的值为零,则结果与x相同。

如果x是 IEEE 无穷大,则结果为 IEEE NaN。

如果x是 IEEE NaN,则结果为相同的 NaN。

示例#

示例程序

program demo_setexp
implicit none
real :: x = 178.1387e-4
integer :: i = 17
   print *, set_exponent(x, i), fraction(x) * radix(x)**i
end program demo_setexp

结果

      74716.7891       74716.7891

标准#

Fortran 95

另请参见#

digits(3)epsilon(3)exponent(3)fraction(3)huge(3)maxexponent(3)minexponent(3)nearest(3)precision(3)radix(3)range(3)rrspacing(3)scale(3)spacing(3)tiny(3)

fortran-lang 内联函数描述

spacing#

名称#

spacing(3) - [MODEL_COMPONENTS] 给定类型两个数字之间的最小距离

概要#

    result = spacing(x)
     elemental real(kind=KIND) function spacing(x)

      real(kind=KIND), intent(in) :: x

特征#

  • x 为任意有效种类的实数类型

  • 结果与输入参数x的类型相同。

描述#

spacing(3) 确定参数x与其相同类型最近邻数字之间的距离。

选项#

  • x

    应为实型

结果#

如果x的值不为零且不是 IEEE 无穷大或 NaN,则结果的值最接近于x,对于相同类型和种类的值,假设该值是可以表示的。

否则,该值与tiny(x)相同。+ 零产生tiny(x) + IEEE 无穷大产生 IEEE Nan + 如果是 IEEE NaN,则返回该 NaN

如果有两个扩展模型值与x等距,则取绝对值较大的值。

示例#

示例程序

program demo_spacing
implicit none
integer, parameter :: sgl = selected_real_kind(p=6, r=37)
integer, parameter :: dbl = selected_real_kind(p=13, r=200)

   write(*,*) spacing(1.0_sgl)
   write(*,*) nearest(1.0_sgl,+1.0),nearest(1.0_sgl,+1.0)-1.0

   write(*,*) spacing(1.0_dbl)
end program demo_spacing

结果

典型值……

     1.1920929E-07
      1.000000      1.1920929E-07
     0.9999999     -5.9604645E-08
     2.220446049250313E-016

标准#

Fortran 95

另请参见#

digits(3)epsilon(3)exponent(3)fraction(3)huge(3)maxexponent(3)minexponent(3)nearest(3)precision(3)radix(3)range(3)rrspacing(3)scale(3)set_exponent(3)tiny(3)

fortran-lang 内在描述 (许可证:MIT) @urbanjost

digits#

名称#

digits(3) - [NUMERIC MODEL] 数值模型中的有效数字

概要#

    result = digits(x)
     integer function digits(x)

      TYPE(kind=KIND),intent(in) :: x(..)

特征#

  • x整数实数标量或数组

  • 返回值为默认种类的整数

描述#

digits(3) 返回x的内部模型表示的有效数字数。例如,在使用 32 位浮点表示的系统上,默认实数可能会返回 24。

选项#

  • x

    要查询的类型和种类的值

结果#

变量的类型和种类为x的有效数字数。

示例#

示例程序

program demo_digits
implicit none
integer :: i = 12345
real :: x = 3.143
doubleprecision :: y = 2.33d0
   print *,'default integer:', digits(i)
   print *,'default real:   ', digits(x)
   print *,'default doubleprecision:', digits(y)
end program demo_digits

结果

 >  default integer:          31
 >  default real:             24
 >  default doubleprecision:          53

标准#

Fortran 95

另请参见#

epsilon(3)exponent(3)fraction(3)huge(3)maxexponent(3)minexponent(3)nearest(3)precision(3)radix(3)range(3)rrspacing(3)scale(3)set_exponent(3)spacing(3)tiny(3)

fortran-lang 内在描述 (许可证:MIT) @urbanjost

epsilon#

名称#

epsilon(3) - [NUMERIC MODEL] Epsilon 函数

概要#

    result = epsilon(x)
     real(kind=kind(x)) function epsilon(x)

      real(kind=kind(x),intent(in)   :: x(..)

特征#

  • x 应为实数类型。它可以是标量或数组。

  • 结果为与x相同类型和种类类型参数的标量。

描述#

epsilon(3) 返回浮点相对精度。它是相对于1的几乎可以忽略的数字,使得1+ little_number不等于1;或者更准确地说

   real( 1.0, kind(x)) + epsilon(x) /=  real( 1.0, kind(x))

可以将其视为从 1.0 到下一个最大浮点数的距离。

epsilon(3) 的一个用途是为搜索直到计算在估计值的delta范围内的算法选择delta值。

如果delta太小,则算法可能永远不会停止,因为计算小于数据类型的小数分辨率的值的总和不会发生变化。

选项#

  • x

    类型应为实数

结果#

返回值与参数的类型相同。

示例#

示例程序

program demo_epsilon
use,intrinsic :: iso_fortran_env, only : dp=>real64,sp=>real32
implicit none
real(kind=sp) :: x = 3.143
real(kind=dp) :: y = 2.33d0

   ! so if x is of type real32, epsilon(x) has the value 2**-23
   print *, epsilon(x)
   ! note just the type and kind of x matter, not the value
   print *, epsilon(huge(x))
   print *, epsilon(tiny(x))

   ! the value changes with the kind of the real value though
   print *, epsilon(y)

   ! adding and subtracting epsilon(x) changes x
   write(*,*)x == x + epsilon(x)
   write(*,*)x == x - epsilon(x)

   ! these next two comparisons will be .true. !
   write(*,*)x == x + epsilon(x) * 0.999999
   write(*,*)x == x - epsilon(x) * 0.999999

   ! you can calculate epsilon(1.0d0)
   write(*,*)my_dp_eps()

contains

   function my_dp_eps()
   ! calculate the epsilon value of a machine the hard way
   real(kind=dp) :: t
   real(kind=dp) :: my_dp_eps

      ! starting with a value of 1, keep dividing the value
      ! by 2 until no change is detected. Note that with
      ! infinite precision this would be an infinite loop,
      ! but floating point values in Fortran have a defined
      ! and limited precision.
      my_dp_eps = 1.0d0
      SET_ST: do
         my_dp_eps = my_dp_eps/2.0d0
         t = 1.0d0 + my_dp_eps
         if (t <= 1.0d0) exit
      enddo SET_ST
      my_dp_eps = 2.0d0*my_dp_eps

   end function my_dp_eps
end program demo_epsilon

结果

  1.1920929E-07
  1.1920929E-07
  1.1920929E-07
  2.220446049250313E-016
 F
 F
 T
 T
  2.220446049250313E-016

标准#

Fortran 95

另请参见#

digits(3)exponent(3)fraction(3)huge(3)maxexponent(3)minexponent(3)nearest(3)precision(3)radix(3)range(3)rrspacing(3)scale(3)set_exponent(3)spacing(3)tiny(3)

fortran-lang 内在描述 (许可证:MIT) @urbanjost

huge#

名称#

huge(3) - [数值模型] 类型的最大数值

概要#

    result = huge(x)
     TYPE(kind=KIND) function huge(x)

      TYPE(kind=KIND),intent(in) :: x(..)

特征#

  • x 可以是任何实数整数标量或数组,以及任何种类。

  • 结果将是与输入x相同类型和种类的标量。

描述#

huge(3) 返回对于x的种类和类型而言,不是溢出的最大数值。

选项#

  • x

    x 是一个任意值,仅用于确定正在查询的标量的种类类型。它不需要被定义,因为只使用其特征。

结果#

结果是指定类型和种类支持的最大值。

请注意,结果与输入具有相同的种类,以确保返回的值不会溢出。对结果的任何变量赋值都应考虑到这一点。

示例#

示例程序

program demo_huge
implicit none
character(len=*),parameter :: f='(i2,1x,2(i11,1x),f14.0:,1x,l1,1x,a)'
integer :: i,j,k,biggest
real :: v, w
   ! basic
   print *, huge(0), huge(0.0), huge(0.0d0)
   print *, tiny(0.0), tiny(0.0d0)

   sum=0.0d0
   ! note subtracting one because counter is the end value+1 on exit
   do i=0,huge(0)-1
      sum=sum+i
   enddo
   write(*,*)'sum=',sum

   ! advanced
   biggest=huge(0)
   ! be careful of overflow when using integers in computation
   do i=1,14
      j=6**i   ! Danger, Danger
      w=6**i   ! Danger, Danger
      v=6.0**i
      k=v      ! Danger, Danger

      if(v.gt.biggest)then
         write(*,f) i, j, k, v, v.eq.w, 'wrong j and k and w'
      else
         write(*,f) i, j, k, v, v.eq.w
      endif

   enddo
end program demo_huge

结果

  2147483647  3.4028235E+38  1.797693134862316E+308
  1.1754944E-38  2.225073858507201E-308

    1      6           6             6. T
    2      36          36            36. T
    3      216         216           216. T
    4      1296        1296          1296. T
    5      7776        7776          7776. T
    6      46656       46656         46656. T
    7      279936      279936        279936. T
    8      1679616     1679616       1679616. T
    9      10077696    10077696      10077696. T
    10     60466176    60466176      60466176. T
    11     362797056   362797056     362797056. T
    12    -2118184960 -2147483648    2176782336. F wrong for j and k and w
    13     175792128  -2147483648   13060694016. F wrong for j and k and w
    14     1054752768 -2147483648   78364164096. F wrong for j and k and w

标准#

Fortran 95

另请参见#

digits(3)epsilon(3)exponent(3)fraction(3)maxexponent(3)minexponent(3)nearest(3)precision(3)radix(3)range(3)rrspacing(3)scale(3)set_exponent(3)spacing(3)tiny(3)

fortran-lang 内在描述 (许可证:MIT) @urbanjost

maxexponent#

名称#

maxexponent(3) - [数值模型] 实数类型的最大指数

概要#

    result = maxexponent(x)
     elemental integer function maxexponent(x)

      real(kind=**),intent(in)   :: x

特征#

  • x 是任何实数种类的实数标量或数组。

  • 结果是默认的整数标量。

描述#

maxexponent(3) 返回x类型的模型中的最大指数。

选项#

  • x

    用于选择要返回值的实数种类。

结果#

返回的值是查询值的种类对应的最大指数。

示例#

示例程序

program demo_maxexponent
use, intrinsic :: iso_fortran_env, only : real32,real64,real128
implicit none
character(len=*),parameter :: g='(*(g0,1x))'
   print  g,  minexponent(0.0_real32),   maxexponent(0.0_real32)
   print  g,  minexponent(0.0_real64),   maxexponent(0.0_real64)
   print  g,  minexponent(0.0_real128),  maxexponent(0.0_real128)
end program demo_maxexponent

结果

   -125 128
   -1021 1024
   -16381 16384

标准#

Fortran 95

另请参见#

digits(3)epsilon(3)exponent(3)fraction(3)huge(3)minexponent(3)nearest(3)precision(3)radix(3)range(3)rrspacing(3)scale(3)set_exponent(3)spacing(3)tiny(3)

fortran-lang 内在描述 (许可证:MIT) @urbanjost

minexponent#

名称#

minexponent(3) - [数值模型] 实数类型的最小指数

概要#

    result = minexponent(x)
     elemental integer function minexponent(x)

      real(kind=**),intent(in) :: x

特征#

  • x 是任何实数种类的实数标量或数组。

  • 结果是默认的整数标量。

描述#

minexponent(3) 返回x类型的模型中的最小指数。

选项#

  • x

    用于选择要返回值的实数种类。

结果#

返回的值是查询值的种类对应的最大指数。

示例#

示例程序

program demo_minexponent
use, intrinsic :: iso_fortran_env, only : &
 &real_kinds, real32, real64, real128
implicit none
real(kind=real32) :: x
real(kind=real64) :: y
    print *, minexponent(x), maxexponent(x)
    print *, minexponent(y), maxexponent(y)
end program demo_minexponent

预期结果

        -125         128
       -1021        1024

标准#

Fortran 95

另请参见#

digits(3)epsilon(3)exponent(3)fraction(3)huge(3)maxexponent(3)nearest(3)precision(3)radix(3)range(3)rrspacing(3)scale(3)set_exponent(3)spacing(3)tiny(3)

fortran-lang 内在描述 (许可证:MIT) @urbanjost

precision#

名称#

precision(3) - [数值模型] 实数类型的十进制精度

概要#

    result = precision(x)
     integer function precision(x)

      TYPE(kind=**),intent(in) :: x

特征#

  • x 应为实数复数类型。它可以是标量或数组。

  • 结果是默认的整数标量。

描述#

precision(3) 返回x类型的模型中的十进制精度。

选项#

  • x

    参数的类型和种类用于确定要查询哪个数字模型。参数的值未使用;它甚至可能未定义。

结果#

x的类型和种类的值的精度。

示例#

示例程序

program demo_precision
use,intrinsic :: iso_fortran_env, only : dp=>real64,sp=>real32
implicit none
real(kind=sp)    :: x(2)
complex(kind=dp) :: y

   print *, precision(x), range(x)
   print *, precision(y), range(y)

end program demo_precision

结果

  >           6          37
  >          15         307

标准#

Fortran 95

另请参见#

digits(3)epsilon(3)exponent(3)fraction(3)huge(3)maxexponent(3)minexponent(3)nearest(3)radix(3)range(3)rrspacing(3)scale(3)set_exponent(3)spacing(3)tiny(3)

fortran-lang 内在描述 (许可证:MIT) @urbanjost

radix#

名称#

radix(3) - [数值模型] 数值模型的基数

概要#

   result = radix(x)
    integer function radix(x)

     TYPE(kind=**),intent(in) :: x(..)

特征#

  • x 可以是任何实数整数类型的标量或数组。

  • 结果是默认的整数标量。

描述#

radix(3) 返回表示数值实体x的内部模型的基数。

在位置记数系统中,基数或底数是用于表示数字的唯一数字(包括数字零)的数量。

此函数有助于以通用方式表示内部计算模型,但对于所有常见平台上的所有数值类型,它都将为 2(表示二进制机器)。

选项#

  • x

    用于识别要查询的数字类型。

结果#

返回的值指示内部用于表示x表示的数值类型的基数。

示例#

示例程序

program demo_radix
implicit none
   print *, "The radix for the default integer kind is", radix(0)
   print *, "The radix for the default real kind is", radix(0.0)
   print *, "The radix for the doubleprecision real kind is", radix(0.0d0)
end program demo_radix

结果

 >  The radix for the default integer kind is           2
 >  The radix for the default real kind is           2
 >  The radix for the doubleprecision real kind is           2

标准#

Fortran 95

另请参见#

digits(3)epsilon(3)exponent(3)fraction(3)huge(3)maxexponent(3)minexponent(3)nearest(3)precision(3)range(3)rrspacing(3)scale(3)set_exponent(3)spacing(3)tiny(3)

fortran-lang 内在描述 (许可证:MIT) @urbanjost

range#

名称#

range(3) - [数值模型] 数值类型的十进制指数范围

概要#

    result = range(x)
      integer function range (x)

       TYPE(kind=KIND),intent(in) :: x

特征#

  • x 可以是整数实数复数类型。它可以是标量或数组。

  • KINDx类型支持的任何种类。

  • 结果是默认的整数标量。

描述#

range(3) 返回x类型的模型中的十进制指数范围。

由于x仅用于确定正在查询的类型和种类,因此该值不需要被定义。

选项#

  • x

    用于查询的类型和种类对应的值

结果#

情况 (i)

对于整数参数,结果值为

    int (log10 (huge(x)))
情况 (ii)

对于实数参数,结果值为

     int(min (log10 (huge(x)), -log10(tiny(x) )))
情况 (iii)

对于复数参数,结果值为

    range(real(x))

示例#

示例程序

program demo_range
use,intrinsic :: iso_fortran_env, only : dp=>real64,sp=>real32
implicit none
real(kind=sp)    :: x(2)
complex(kind=dp) :: y
   print *, precision(x), range(x)
   print *, precision(y), range(y)
end program demo_range

结果

 >            6          37
 >           15         307

标准#

Fortran 95

另请参见#

digits(3)epsilon(3)exponent(3)fraction(3)huge(3)maxexponent(3)minexponent(3)nearest(3)precision(3)radix(3)rrspacing(3)scale(3)set_exponent(3)spacing(3)tiny(3)

fortran-lang 内在描述 (许可证:MIT) @urbanjost

tiny#

名称#

tiny(3) - [数值模型] 实数类型的最小正数

概要#

    result = tiny(x)
     real(kind=KIND) function tiny(x)

      real(kind=KIND) :: x

特征#

  • x 可以是任何实数标量或数组

  • 结果与x具有相同的类型和种类

描述#

tiny(3) 返回x的类型和种类对应的最小正(非零)数。

对于实数x

   result = 2.0**(minexponent(x)-1)

选项#

  • x

    用于确定要查询的模型类型的种类对应的值

结果#

指定种类的实数类型的最小正值。

示例#

示例程序

program demo_tiny
implicit none
   print *, 'default real is from', tiny(0.0), 'to',huge(0.0)
   print *, 'doubleprecision is from ', tiny(0.0d0), 'to',huge(0.0d0)
end program demo_tiny

结果

 default real is from 1.17549435E-38 to 3.40282347E+38
 doubleprecision is from 2.2250738585072014E-308 to
 1.7976931348623157E+308

标准#

Fortran 95

另请参见#

digits(3)epsilon(3)exponent(3)fraction(3)huge(3)maxexponent(3)minexponent(3)nearest(3)precision(3)radix(3)range(3)rrspacing(3)scale(3)set_exponent(3)spacing(3)

fortran-lang 内在描述 (许可证:MIT) @urbanjost