gpt4 book ai didi

fortran - 测试 float 相等

转载 作者:行者123 更新时间:2023-12-01 14:46:52 31 4
gpt4 key购买 nike

我在 Windows 7(32 位)下的 MinGW 中使用 gfortran 来编译 Fortran 代码。这是文件 testequal.f 中包含的最少代码:

      program testequal
real*8 a1, a2

a1 = 0.3d0
a2 = 0.7d0

write(*,*) 1.d0
write(*,*) a1+a2
write(*,*) a1+a2.eq.1.0
write(*,*) a1+a2.eq.1.d0
end

编译为
gfortran testequal.f -std=legacy

输出是:
1.0000000000000000
1.0000000000000000
F
F

但我希望这两个 bool 值都是 T (真的)。这里有什么问题?

最佳答案

除了极少数异常(exception),不要比较浮点数是否完全相等。有限精度浮点运算的规则与实数运算的规则不一样。比较具有容差的数字,例如,

sum = a1 + a2
if ( abs (sum - 1.0) < 1.0D-5 ) ...

关于fortran - 测试 float 相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20764911/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com