Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran:0.d0是否总是==0?_Fortran_Double_Rounding_Precision - Fatal编程技术网

Fortran:0.d0是否总是==0?

Fortran:0.d0是否总是==0?,fortran,double,rounding,precision,Fortran,Double,Rounding,Precision,在fortran中,我是否可以始终依靠0.d0==0来生成.true? 即: 我试过一段简单的代码,结果是。真的。但我能一直相信这个吗? 这样做的原因是我想避免在x

在fortran中,我是否可以始终依靠0.d0==0来生成.true? 即:

我试过一段简单的代码,结果是。真的。但我能一直相信这个吗?
这样做的原因是我想避免在x<-1时出现acos(x)问题。

I
将在应用关系等式测试之前提升为浮点类型

浮点零将与自身以及负符号零进行比较


“我可以一直相信这个吗?”是的,你可以。

谢谢,我认为浮点0是0(不是用0.000000000000000000000000000000001或类似的数字表示)不,零可以用浮点精确表示。此链接可能会帮助您:@ErikThysell通常的规则是小整数可以精确表示。当然,如果直接输入它们,某些计算的结果可能不精确。对于IEEE754双精度浮点,“小”表示任何高达2的53次方的值。
real(8) :: x
integer :: i

x = 0.d0
i = 0
write(*,*) x == i