3
在Fortran中,我总是可以依靠0.d0 == 0导致.true。 ? 即:Fortran:是0.d0总是== 0?
real(8) :: x
integer :: i
x = 0.d0
i = 0
write(*,*) x == i
我试图在一个简单的代码,它原来作为.TRUE。但我能永远相信这一点吗? 原因是我想避免acos(x)
如果x < -1的问题。
在Fortran中,我总是可以依靠0.d0 == 0导致.true。 ? 即:Fortran:是0.d0总是== 0?
real(8) :: x
integer :: i
x = 0.d0
i = 0
write(*,*) x == i
我试图在一个简单的代码,它原来作为.TRUE。但我能永远相信这一点吗? 原因是我想避免acos(x)
如果x < -1的问题。
i
将被提升为之前的浮点型应用关系相等性测试==
。
浮点数零将比较true
本身,也与一个负符号零。
“我能永远相信吗?”是的你可以。
谢谢,我认为浮点数0是0(不是由0.000000000000000000000000000000000000001或类似的数字表示) –
不,零可以完全用浮点数表示。此链接可能会对您有所帮助:https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html – Bathsheba
@ErikThysell通常的规则是可以精确地表示小整数。当然,如果直接输入它们,某些计算的结果可能不准确。 –