【发布时间】:2013-11-22 04:37:16
【问题描述】:
设,x 是一个整数,y = x * x。
那么保证sqrt(y) == x?
例如,我能否确定sqrt(25) 或sqrt(25.0) 将返回5.0,而不是5.0000000003 或4.999999998?
【问题讨论】:
-
如果5不能准确表示,怎么可能呢?您可以期望的最好结果是它会截断为 5。
-
既然5是整数,不应该精确表示吗?我在某处读到 double 可以准确地将值存储在整数范围内。
-
@RafiKamal:一个 IEEE-754 64 位双精度浮点数可以准确地表示整个 32 位有符号和无符号整数范围而不会丢失。在那种情况下,这只控制类型转换。它不控制计算
sqrt(x)的浮点库的精度。 -
@JoeZ 谢谢,我明白了
标签: c++ floating-point-precision