【发布时间】:2011-05-16 12:00:43
【问题描述】:
这里是简化的代码:
int i = 1;
double a = i;
double b = i;
是否保证a == b 为true?
【问题讨论】:
-
为什么不呢?如果有人说不,我当然想知道为什么!
-
因为例如由于精度问题,一般情况下为 4.0/2.0 != 8.0/4.0。我的问题没有任何计算,所以问题是它是否有助于避免这个问题。
-
虽然技术上正确,但这是一个糟糕的示例选择,因为这两个值都可以用 IEEE 754 双浮点类型精确表示。
-
@codekaizen,是的,你是对的,我知道。这是一个极其简化的示例。
-
(1.0 / 3.0) * 5.0 != 5.0 / 3.0 可能是更好的选择。