vue中当数字*100后的计算失误问题:0.3*100得到的结果是229.99999999999997
前言:在做消费类型系统的时候,遇到个问题,是计算机乘法问题得到结果有问题,比如 : 0.3*100得到的结果是229.99999999999997原因:二进制和十进制转换中的限位问题,浮点运算带上点微小的误差是正常现象。但是对于消费来说,这个问题是很严重的,我们要求的计算不能出现问题,解决办法:将以下的方法引入页面methods中,参数是你的数据,(注意:必须Sting类型),然后获取返回的值,就
·
前言:
在做消费类型系统的时候,遇到个问题,是计算机乘法问题得到结果有问题,
比如 : 0.3*100得到的结果是229.99999999999997
原因:
二进制和十进制转换中的限位问题,浮点运算带上点微小的误差是正常现象。
但是对于消费来说,这个问题是很严重的,我们要求的计算不能出现问题,
解决办法:
将以下的方法引入页面methods中,参数是你的数据,(注意:必须Sting类型),然后获取返回的值,就是处理好的数据
还有一点,我在@blur的事件中调用这个方法是会报错,很奇怪,但是其他地方调用没有任何问题
/**
* 计算精度问题
* 解决 2.3*100 计算机得到的不是230的问题
* */
yuantofen(val) {
var s = val.split(".")
var yuan = parseInt(s[0]) * 100;
var fen = 0;
if (s.length > 1) {
let fenVal = (parseInt(s[1].substr(0, 1))) * 10;
fen += fenVal;
if (s[1].length > 1) {
fen += parseInt(s[1].substr(1, 1));
}
}
var fee = yuan + fen;
return fee;
},
到这里就结束了
更多推荐
已为社区贡献102条内容
所有评论(0)