Golang 的默认浮点类型是 float64,但我得到了两个不同的结果:
1.005 * 100 // 100.5
float64(1.005) * 100 // 100.49
此外,我还有一个问题:
var n = 1.005
const m = 1.005
rn := n * n // 1.01002499
rm := m * m // 1.010025
t.Log(rn, rm)
哪位好心人解释一下?
答案 0 :(得分:1)
当将 2 个常量相乘时,数学是在编译时用任意精度算术完成的[1]。这意味着结果可以比常规浮点运算具有更高的准确度,常规浮点运算是通过 CPU 中的标准浮点运算完成的,并受精度限制。