美文网首页Web前端之路让前端飞Web 前端开发
一个数字截取引发的精度问题(二)

一个数字截取引发的精度问题(二)

作者: 前端黑板报 | 来源:发表于2017-03-14 22:12 被阅读50次

    上篇文章只是简单介绍了 toFixed 方法,抽时间把 Number 里的一些方法又看了一下,其中有个方法引起我的注意:

    Number.prototype.toPrecision()
    

    precision 为"精度"的意思,貌似这个方法更符合上一篇文章所说的功能。可是事情并没有像我想象的一样,先看官方定义:

    A string representing a Number object in fixed-point or exponential notation rounded to precision significant digits

    大意:

    返回一个定点和指数表示的同时四舍五入到指定位数的字符串。

    再看一下使用方法,同时会总结出一些要点:

    let PI = 3.1415926
    console.log(PI.toPrecision(6)) // 3.14159
    console.log(PI.toPrecision(4)) // 3.142
    console.log(PI.toPrecision(2)) // 3.1
    

    1.按指定的数字截取数字位数,同时四舍五入。

    let numObj = 0.000123
    
    console.log(numObj.toPrecision());    // '0.000123'
    console.log(numObj.toPrecision(5));   // '0.00012300'
    console.log(numObj.toPrecision(2));   // '0.00012'
    console.log(numObj.toPrecision(1));   // '0.0001' 
    

    2.没有传入参数时,返回数字的字符串形式,3.截取的位置从左边第一个非0的数字开始算起,不足补0。

    let numObj = 12345.6
    numObj.toPrecision(2) // '1.2e+4'
    

    4.当传入的参数小于数字的整数位时,返回指数形式标识的字符串。

    此方法用下来并没有达到我直觉认为的那样,这在一些金钱格式化上还不是很好用。

    相关文章

      网友评论

        本文标题:一个数字截取引发的精度问题(二)

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