• 保留小数位toFixed()方法的怪异表现


    1 、tofixed方法

    toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。例如将数据Num保留2位小数,则表示为:toFixed(Num);但是其四舍五入的规则与数学中的规则不同,使用的是银行家舍入规则,银行家舍入:所谓银行家舍入法,其实质是一种四舍六入五取偶(又称四舍六入五留双)法。具体规则如下:

    简单来说就是:四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一。通过谷歌测试:前两句是对的,四舍六入五考虑,五后非零就进一,五后为零的情况和前面的数字有关,但不仅仅是奇偶的关系;而且五后为零后面还有非零也进一,总之在计算的时候可能这就不是我们想要的了,不符合数学规律;

    先走一波测试(谷歌):

    12.050.toFixed(1)
    "12.1"
    12.150.toFixed(1)
    "12.2"
    12.250.toFixed(1)
    "12.3"
    12.350.toFixed(1)////////
    "12.3"
    12.450.toFixed(1)////////
    "12.4"
    12.550.toFixed(1)
    "12.6"
    12.650.toFixed(1)
    "12.7"
    12.750.toFixed(1)
    "12.8"
    12.850.toFixed(1)/////////
    "12.8"
    12.950.toFixed(1)/////////
    "12.9"

    12.9501.toFixed(1)
    "13.0"

    2 、Math.round()方法

    例如:对于X进行保留两位小数的处理,则可以使用Math.round(X * 100) / 100.进行处理

    function mathfloat(num, n) {
        n = n ? parseInt(n) : 0;
        if(n <= 0) {
            return Math.round(num);
        }
        num = Math.round(num * Math.pow(10, n)) / Math.pow(10, n); //四舍五入
        num = Number(num).toFixed(n); //补足位数
        return num;
    };
  • 相关阅读:
    3.22
    练习 3.16
    简单工厂模式
    Java-不可变字符串
    java中的缓冲流
    TCP协议下java通信
    nginx优化
    nginx反向代理
    shell-for循环
    shell-数组
  • 原文地址:https://www.cnblogs.com/wangtaolearning/p/12557685.html
Copyright © 2020-2023  润新知