这肯定是重复的,但到目前为止还没有找到答案。 当我在节点脚本中将0.8 - 0.45计算为变量或直接在控制台中计算时,它会导致:
0.35000000000000003
为什么呢?我该如何正确计算?
答案 0 :(得分:1)
问题在于浮点数存储在内存中的方式。浮点运算的结果始终是预期结果的近似值。
你应该忽略它。在大多数语言中,当打印时,浮点值会被截断。
答案 1 :(得分:0)
如果您在节点中打印它,可以尝试(.8-.45).toFixed(2)
或者您想要的小数点数
答案 2 :(得分:0)
二进制中的浮点运算在很多时候并不是十进制算术的完美表示。类似于十进制数学遇到无限小数,“无理数”(平方根2,pi等),二进制也会遇到无理或其他“巨大”数字,有时在十进制数非常短的情况下,它可能会令人困惑,因为操作看起来很简单,而数字的二进制表示可能非常大。
https://en.wikipedia.org/wiki/Floating-point_arithmetic
因为计算机只为该数字指定了一定数量的位,这意味着该数字基本上是四舍五入的。
你永远不应该依赖浮点运算的结果来完美,但是你可以通过更多的位来增加变量的精度。