JavaScript precision

JavaScript precision

本文关键字:precision JavaScript      更新时间:2023-09-26

关于这个话题已经说了很多,但是我找不到我的问题的确切答案。

JavaScript 不能准确地表示十进制数,例如 0.1,这是可以理解的。

例如,由于乘

法过程中发生的舍入误差,因此情况确实如此:

0.1 * 3 === 0.30000000000000004

这很好 - 所有这些都符合IEEE浮点运算标准(IEEE 754)。

我无法理解的是,为什么其他使用该标准的语言也能提供更准确的测量结果

0.1 * 3 === 0.3

这是因为他们使用的不同舍入规则吗? https://en.wikipedia.org/wiki/IEEE_floating_point#Rounding_rules 还是我错过了什么?

任何

使用IEEE 754 Floating Point的语言数学都会有与你在 JavaScript 中看到的相同的舍入问题。

某些语言(如 C#)提供具有更准确的数学处理的 Decimal 类型,用十进制精度换取范围。

在 JavaScript 中有一些不同的浮点库,例如 BigDecimal,但由于它们没有烘焙到语言中,因此您不能使用常规的数学运算符,例如 +*