如何实现JavaScript中精确的加减乘除运算?

更新于
2026-10-01 14:57:18
1阅读来源:SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计654个文字,预计阅读时间需要3分钟。

如何实现JavaScript中精确的加减乘除运算?

在CRM系统中,二代审核核需详细页面显示时,JS无法进行精确计算,存在bug。例如,在输入数值时,需要按比例(后端传值类似0.8的小数)将用户输入的数字以不同方式展示。在dubheInvest=invest * (1 - ratio); 运算中,发现计算时出现异常。

JS无法进行精确计算的bug

在做CRM,二代审核需求审核详情页面时。需要按比例(后端传类似0.8的小数)把用户输入的数字显示在不同的地方。
在做dubheInvest = invest * (1 - ratio);运算时发现问题。具体如下:
示例代码:

console.log( 1 - 0.8 ); //输出 0.19999999999999996 console.log( 6 * 0.7 ); //输出 4.199999999999999 console.log( 0.1 + 0.2 ); //输出 0.30000000000000004 console.log( 0.1 + 0.7 ); //输出 0.7999999999999999 console.log( 1.2 / 0.2 ); //输出 5.999999999999999

通过上面举出的例子可以看到,原生的js运算结果不一定准确,会丢失精度。

解决方案

解决方案的原理是,将浮点数乘以(扩大)10的n次方倍,把浮点数变为整数后再进行相应的运算,最后将得到的结果除以(缩小)10的n次方倍。

阅读全文

本文共计654个文字,预计阅读时间需要3分钟。

如何实现JavaScript中精确的加减乘除运算?

在CRM系统中,二代审核核需详细页面显示时,JS无法进行精确计算,存在bug。例如,在输入数值时,需要按比例(后端传值类似0.8的小数)将用户输入的数字以不同方式展示。在dubheInvest=invest * (1 - ratio); 运算中,发现计算时出现异常。

JS无法进行精确计算的bug

在做CRM,二代审核需求审核详情页面时。需要按比例(后端传类似0.8的小数)把用户输入的数字显示在不同的地方。
在做dubheInvest = invest * (1 - ratio);运算时发现问题。具体如下:
示例代码:

console.log( 1 - 0.8 ); //输出 0.19999999999999996 console.log( 6 * 0.7 ); //输出 4.199999999999999 console.log( 0.1 + 0.2 ); //输出 0.30000000000000004 console.log( 0.1 + 0.7 ); //输出 0.7999999999999999 console.log( 1.2 / 0.2 ); //输出 5.999999999999999

通过上面举出的例子可以看到,原生的js运算结果不一定准确,会丢失精度。

解决方案

解决方案的原理是,将浮点数乘以(扩大)10的n次方倍,把浮点数变为整数后再进行相应的运算,最后将得到的结果除以(缩小)10的n次方倍。

阅读全文