为什么是(327.59 * 100.0)< 32759.0是真的吗?

时间:2015-11-11 19:58:58

标签: f# floating-point

乘法

(327.59 * 100.0) 

产生的数字小于32759,为什么?如何避免这种情况?

1 个答案:

答案 0 :(得分:6)

使用F#Interactive修改的漂亮打印机,数字精度完全显示。

fsi.AddPrinter( fun (x:float) -> sprintf "%26.16e" x)

(327.59 * 100.0)
// val it : float =    3.2758999999999996e+004

32759.0
// val it : float =    3.2759000000000000e+004

那是

的原因
(327.59 * 100.0) < 32759.0 = true