本文主要是介绍js浮点数计算精度问题(输入19.9乘100后结果1989.9999999999998),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、问题
在项目中设置商品价格是输入19.9,因为后端存储的是分所以在接口传递参数的时候需要将输入的数乘100,在乘100后出现精度问题。
二、解决
由于浮点型直接计算可能会出问题,所以可以将其先转为整型计算,乘法先去掉小数点,先转为整数乘法,然后再将结果缩小n倍
// 解决js数字小数点丢失精度的问题
numMultiFn(num1, num2) {var baseNum = 0;baseNum += num1.toString().split(".")[1].length;//获取数字一小数点后的长度baseNum += num2.toString().split(".")[1].length;//获取数字二小数点后的长度return Number(num1.toString().replace(".", "")) * Number(num2.toString().replace(".", "")) / Math.pow(10, baseNum);
},
//调用
let number = this.numMultiFn(19.9, 100)
此方法只解决了乘法的精度问题,因为加减乘除都会存在精度问题,所以可以在这个的基础上改动解决其他的计算精度问题。
这篇关于js浮点数计算精度问题(输入19.9乘100后结果1989.9999999999998)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!