vue中当数字*100后的计算失误问题:0.3*100得到的结果是229.99999999999997

前言:

       在做消费类型系统的时候,遇到个问题,是计算机乘法问题得到结果有问题,

比如 : 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;
    },

到这里就结束了

 

你可能感兴趣的:(杂记,vue,vue)