Fortran - 数值精度
-
简述
我们已经讨论过,在旧版本的 Fortran 中,有两个realtypes:默认的real类型和double precision类型。但是,Fortran 90/95 通过kind指定。 -
kind 属性
不同类型的数字在计算机内部的存储方式不同。这kind属性允许您指定数字在内部的存储方式。例如,在上述声明中,实变量 e、f 和 g 比实变量 a、b 和 c 具有更高的精度。与整数变量 i、j 和 k 相比,整数变量 l、m 和 n 可以存储更大的值并具有更多的位数用于存储。虽然这取决于机器。例子
当您编译并执行上述程序时,它会产生以下结果 - -
查询变量的大小
有许多内在函数可以让您询问数字的大小。例如,bit_size(i)内在函数指定用于存储的位数。对于实数,precision(x)内在函数,返回精度的小数位数,而range(x)内在函数返回指数的十进制范围。例子
当您编译并执行上述程序时,它会产生以下结果 - -
获取 kind 值
Fortran 提供了另外两个内在函数来获得所需的整数和实数精度的类型值 -- selected_int_kind (r)
- selected_real_kind ([p, r])
selected_real_kind 函数返回一个整数,该整数是给定十进制精度 p 和十进制指数范围 r 所需的种类类型参数值。十进制精度是有效位数,十进制指数范围指定最小和最大可表示数字。因此范围是从 10-r 到 10+r。例如, selected_real_kind (p = 10, r = 99) 返回小数点后 10 位精度所需的种类值,范围至少为 10-99 到 10+99。例子
当您编译并执行上述程序时,它会产生以下结果 -