关于js字符串类型直接进行计算后显示小数点后多位,前端显示精度的问题

JS 数字类型只有number类型,number类型相当于其他强类型语言中的double类型(双精度浮点型),不区分浮点型和整数型。

以下是后端返回给我的数据

{
name: "固定比例"
value: "0.14"
}

我在代码中为了实现百分比而进行了以下运算

{c.value * 100}%

但是最后显示的结果为14.000000000000000002%

原因是在进行‘0.14’*100计算时,

计算机中的数字都是以二进制存储的,二进制浮点数表示法并不能精确的表示类似0.14这样 的简单的数字

如果要计算 0.14 * 100 的结果,计算机会先把 0.14 和 100 分别转化成二进制,然后相加,最后再把得到的结果转为十进制

但有一些浮点数在转化为二进制时,会出现无限循环 ,比如0.14这个数字,效果如下

怎么解决呢?

1.原生方法:Number.toFixed()

 2.第三方封装类库,math库

math.config({
        number: 'BigNumber',  
        precision: 20         
    });
    let num= math.bignumber(a) * math.bignumber(b)
    console.log(math.number(num))

这里只是初步记录,方法并不多

posted @ 2022-03-15 16:15  2han9x1nyun  阅读(576)  评论(0)    收藏  举报