在Javascript中:1.1-1=0.100000000000009

在Javascript中:1.1-1=0.100000000000009,javascript,floating-point-precision,Javascript,Floating Point Precision,什么样的错误? 我该如何解决这个问题 1.1-1=0.100000000000009 1.0000001+1=2.000000100000003您可以使用.toFixed()方法解决此问题 这就是浮点问题 例如: 警报((1.234567890).toFixed(2)) javascript使用数据类型。浮点数从来都不是精确的,因此在比较数据时不要使用==而是从中使用(目前似乎是向下的): ECMAScript数字以二进制表示为IEEE-754(IEC 559)双精度,分辨率为53位,精度为1

什么样的错误? 我该如何解决这个问题

1.1-1=0.100000000000009


1.0000001+1=2.000000100000003

您可以使用
.toFixed()
方法解决此问题
这就是浮点问题

例如:


警报((1.234567890).toFixed(2))

javascript使用数据类型。浮点数从来都不是精确的,因此在比较数据时不要使用==而是从中使用<和/或>

(目前似乎是向下的):

ECMAScript数字以二进制表示为IEEE-754(IEC 559)双精度,分辨率为53位,精度为15-16位十进制数字;不超过
9e15
的整数为 精确,但小数点不多。鉴于此,算法尽可能精确,但仅此而已。如果真结果和所有中间产物都是该范围内的整数,则对整数的运算是精确的


特别是,通常不应比较非整数结果是否相等,非整数计算结果通常需要舍入。

欢迎来到IEEE 754算术世界。:-)这不是一个错误,而是浮点运算的现实。看,这实际上是正确的答案。检查浮点数可以是精确的,只是不适用于其范围内的所有十进制值。尽管如此,不等式比较并不能解决问题(浮点错误仍然会影响结果),除非您添加对任意“epsilon”的检查。
<script>
alert((1.234567890).toFixed(2))
</script>