欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

有关JS小数运算精度问题的讲解

程序员文章站 2023-08-28 19:46:59
我们可能在平时运算过程中碰到以下类似情况: 0.1 + 0.2 结果是 0.30000000000000004 0.0003 * 10 结果是 0.00299999999999...

我们可能在平时运算过程中碰到以下类似情况:

0.1 + 0.2 结果是 0.30000000000000004

0.0003 * 10 结果是 0.0029999999999999996

0.003 / 10 结果是 0.00030000000000000003

原因在于:在计算机内部,使用二进制浮点数并不能准确地表示像 0.1, 0.2 或 0.3 这样的数字,所以当编码或解释代码时,像“0.1”其实已经舍入为与0.1最接近的数字,即使在计算发生之前已经会导致小的舍入误差(是的,所有语言都是这样)

如果不想看到这些额外的小数位数:在显示时,我们可以用tofixed()或toprecision() 之类将结果格式化为固定的小数位数

tofixed(num)可把 number 四舍五入为指定小数位数的数字

toprecision(num)可在对象的值超出指定位数时将其转换为指数计数法