假设我有以下程序:
program derp
implicit none
integer, parameter :: ikind = selected_real_kind(18)
real (kind = ikind) :: a = 2.0 / 3.0
print*, a
end program derp
该程序derp
输出0.6666666865348815917
,这显然不是 18 位精度。但是,如果我定义a=2.0
and b=3.0
使用相同的方法和then define c=a/b
我得到的输出0.666666666666666666685
,这很好。如何将变量定义为整数的商并让它存储我想要的所有精度数字selected_real_kind
?
Try: real (kind = ikind) :: a = 2.0_ikind / 3.0_ikind
原因是虽然 LHS 是高精度,但代码示例中的 RHS 2.0 / 3.0 却不是。 Fortran 以单精度进行计算,然后将结果分配给 LHS。由于 LHS 的精度较高,因此 RHS 侧不会以更高的精度计算。digits_kind
是指定常量类型的方法digits
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)