【发布时间】:2016-04-13 17:01:08
【问题描述】:
我们知道doubles 会随着您增加小数点数而降低其值的精度。但是,如果我在同一台机器上两次使用相同的 double 值,我是否会保证具有相同的不精确性?例如:
double d1 = 123.456;//actually becomes 123.45600001
double d2 = 123.456;//is guaranteed to become 123.45600001?
为简单起见,我们只使用 C++。
【问题讨论】:
-
大多数 C++ 实现符合 IEEE 浮点标准。所以,是的。
-
@callyalater,不,它没有。
-
@SergeyA 你是对的。我的意思是说most implementations are。
-
请注意,比较从相同文字初始化的两个值的答案与比较从任何其他来源初始化的两个值的答案非常不同。
.2几乎永远不会等于.1+.1 -
当精确相等很重要时,我有时会尝试通过只创建一次值并在各个地方引用它来避免这个问题,即使我必须将其设为全局。当然,这样做的决定将取决于整个程序的各种细微差别。
标签: c++ floating-point double floating-accuracy