美文网首页
解决parseFloat相加小数点保留两位的问题

解决parseFloat相加小数点保留两位的问题

作者: onion1218 | 来源:发表于2017-11-14 17:42 被阅读0次

利用Math.floor

priceTotal = Math.floor(priceTotal * 100) / 100;

以上 是之前的解决方法,后来在项目中发现一个问题是就是虽然购物车中各个商品总价相加不会有很多小数了,但是价格如果大一点的话,用Math.floor就会发生错误,比如 100.05 * 3 就会等于 300.14 ,应该是300.15的 因为娶了相近的整数,再加上我用parseFloat转化了浮点数。

最后使用的法

function toDecimal2(x) {
    var f = parseFloat(x);
    if (isNaN(f)) {
        return "";
    }
    var f = Math.round(x*100)/100;
    var s = f.toString();
    var rs = s.indexOf('.');
    if (rs < 0) {
        rs = s.length;
        s += '.';
    }
    while (s.length <= rs + 2) {
        s += '0';
    }
    return s;
}

相关文章

网友评论

      本文标题:解决parseFloat相加小数点保留两位的问题

      本文链接:https://www.haomeiwen.com/subject/qemfvxtx.html