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

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

这里要先说一个坑

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;

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容