浮点数很棘手,因为许多自然算术属性不成立。
我认为这个特定的属性仍然存在,但我更愿意询问而不是被难以检测的错误击中。
假设它d
是一个任意类型的变量double
。我可以假设在以下操作之后:
d *= 0;
以下检查将始终返回true
?
d == 0
d
我想如果是正/负无穷大或NaN ,这将不成立。但是,还有其他我需要注意的问题吗?
- 我听说在浮点中实际上有两个零,即
+0
和-0
。如果d
一开始是负数,会d *= 0
返回-0
吗?如果是这样,它是否等于0
? - 我听说浮点运算不准确。因此,乘以是否可能
0
会返回类似0.0000001
或-0.000001
不等于的东西0
?我的假设是这很可能是不可能的,但我没有足够的知识来支持这个假设,所以我更愿意问。 - 还有其他我没有预见到的问题吗?