美文网首页
JavaScript浮点数运算

JavaScript浮点数运算

作者: 米米1498 | 来源:发表于2019-01-15 20:06 被阅读0次

    参考资料:https://www.html.cn/archives/7340

    单精度&双精度

    • 单精度
      1符号位、8指数、23小数
    1.png
    • 双精度
      1符号位、11指数、52小数
    2.png

    浮点数

    • 概念:
      浮点数就是小数的二进制表示法;
      指数位决定取值范围;
      小数位决定精度;
    • 有效数字位:
      二进制数有效数字的第一位默认总是1,不保存在小数位中;
      故双精度浮点数的有效数字位是53;

    小数的计算:

    0.1+0.2
    1、十进制——>二进制
    0.000100......(无限)+0.00......(无限)
    2、将二进制结果截取53位有效数字
    3、二进制结果——>十进制数;
    0.30000000000000004

    整数的计算:

    需在1-2^53, 2^53-1的范围内,超出范围也会出现被舍去的精度问题

    Math.js类库

    • Math.abs(x) 返回x的绝对值

    • Math.round() 四舍五入
      Math.ceil() 向上舍入
      Math.floor() 向下舍入

    • Math.pow(x,y) x的y次幂

    其他js运算方法

    • NumberObject.toFixed(x)
      返回,四舍五入为x个小数位的数值。

    格式化数字方法

    /*
     * 保留n位小数,默认2位
     * 123.132  => 123.13
     */
    //eg.调用setDecimalBit(1998.888777),返回1998.89
    export const setDecimalBit=(number,n=2)=>{
        if(isNumber(number)){
            number=(Math.round(  number*Math.pow(10,n)  )*  Math.pow(0.1,n));//eg.jslog:1998.8900000000003
                    number=number..toFixed(n);//eg.jslog:1998.89
            number=number.split('.');
            number=[number[0],number[1].slice(0,n)].join('.');
        };
        return number;
    };
    
    /*
     * 格式化数字,用于前端展示  9,872,980.00 =>9,872,900
     * @s 保留n位小数
     */
    //eg.调用formatNumber(1998.888777),返回1,998.89
    export const formatNumber=(num,s=2)=>{
        if(判断num是否为数字){
            num=setDecimalBit((num),s);
            num=num.toString().split('.');
            //eg.jslog:num=1998,89
            let m=num[0].split('').reverse();
            //eg.jslog:m=8,9,9,1
            for(let i=1,j=0,q=Math.ceil(m.length/3);i<q;i++){
                m.splice(3*i+j,0,',');
                //eg.jslog:i=0,j=1,m=8,9,9,,,1
                j++;
            };
            m=m.reverse().join('');//eg.jslog:m=1,998
            if(num[1]){
                m=[m,num[1]].join('.');
            };
            return m;
        };
        return num;
    };
    

    相关文章

      网友评论

          本文标题:JavaScript浮点数运算

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