Fe-interview: [js] 第440天 如何避免JS浮点运算的精度问题(例:0.1+0.7=0.7999999999999999)

Created on 28 Jun 2020  ·  6Comments  ·  Source: haizlin/fe-interview

第440天 如何避免JS浮点运算的精度问题(例:0.1+0.7=0.7999999999999999)

作者:pacez

80

3+1官网

我也要出题

以最简单的思路避免JS浮点运算的精度问题。请写出具体实现。

js

Most helpful comment

可以利用Number.toLocaleString,默认最多保留3位有效小数

+(0.1 + 0.7).toLocaleString()   // 0.8
+(0.1 + 0.2).toLocaleString()   // 0.3

All 6 comments

可以利用Number.toLocaleString,默认最多保留3位有效小数

+(0.1 + 0.7).toLocaleString()   // 0.8
+(0.1 + 0.2).toLocaleString()   // 0.3

只知道最基础的方式,把小数乘一个倍数转成整数计算,计算完毕除相同倍数.

function strip(num, precision = 12) {
  return parseFloat(num.toPrecision(precision))
}

详见

        function precision(num1,num2){
        num1Length = num1.toString().length;
        num2Length = num2.toString().length;
        let len =  num1Length > num2Length ? num1Length : num2Length;
        return (num1 + num2).toPrecision(len);
    }
    console.log(precision(0.1,0.7));

bignumber

都乘以10然后取整

Was this page helpful?
0 / 5 - 0 ratings