美文网首页
js 保留两位小数,并且四舍五入

js 保留两位小数,并且四舍五入

作者: 噢是珊珊吖 | 来源:发表于2018-11-19 20:37 被阅读0次

    由于项目需求要做 保留两位小数,并且四舍五入

    这里要先说一个坑

    toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。

    但是其四舍五入的规则与数学中的规则不同,使用的是银行家舍入规则,

    所谓银行家舍入法,其实质是一种四舍六入五取偶(又称四舍六入五留双)法。

    简单来说就是:四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一。

    而且好像不同浏览器也不一样

    很明显这个会有些问题,特别是在做跟钱有关的计算时,所以尽量不要用这个

    下面是我项目中用到的方法

    num是要操作的数值,p是要保留几位小数

    export function keepTwoDecimalFull(num, p) {

        let result = parseFloat(num);

        if (isNaN(result)) {

            alert('传递参数错误,请检查!');

            return false;

        }

        let multiplicator = Math.pow(10, p);

        result = Math.round(num * multiplicator) / multiplicator;

        let s_x = result.toString();

        let pos_decimal = s_x.indexOf('.');

        if (pos_decimal < 0) {

            pos_decimal = s_x.length;

            s_x += '.';

        }

        while (s_x.length <= pos_decimal + p) {

            s_x += '0';

        }

        return s_x;

    }

    相关文章

      网友评论

          本文标题:js 保留两位小数,并且四舍五入

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