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

标签 fortran double rounding precision

在 Fortran 中,我能否始终指望 0.d0 == 0 产生 .true。 ? 即:

real(8) :: x
integer :: i

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

我尝试了一段简单的代码,结果是 .true。但我能一直相信这个吗? 这样做的原因是我想避免 acos(x) if x < -1 的问题。

最佳答案

i 将被提升为浮点类型 before 应用关系相等性测试 ==

浮点零会将 true 与自身进行比较,也会与带符号的负零进行比较。

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

关于Fortran:0.d0 总是 == 0 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35434097/

相关文章:

ruby-on-rails - stub 类上调用的所有方法

c++ - C 或 C++ 中的十进制算术?

Unicode 字符(西里尔文)与 Intel Fortran

c - 算术 double 表达式和 c/c++

fortran - Fortran 中的自动数组释放

java - "double-precision floating-point format"的准确度如何?

python - numpy.round 和 numpy.around 之间的区别

PHP 舍入小数

arrays - 对于单精度数组,如何使 Fortran SUM 命令结果超过 2^24

arrays - Fortran 77 在运行时设置数组大小