js 浮点数丢失

一个货物网站商品的价格是float,(例如12.09) 当用户在购买多个商品时,这个时候怎么做计算啊? 浮点数,貌似是会丢失精度,有什么方法可以实现准确的计算?

阅读 3.1k
5 个回答

可以将整数和小数拆开计算。举一个加法计算的小demo。

  Number.prototype.add=function(arg){
        let number1=this.valueOf();
        let number2=arg;
        let len1=number1.toString().split('.')[1].length;
        let len2=arg.toString().split('.')[1].length;
        let len=Math.max(len1,len2);
        return (number1*Math.pow(10,len)+number2*Math.pow(10,len))/Math.pow(10,len);
    }
    console.log(Number(0.1).add(0.2));

只是百分位的话,精度还没有丢失吧。这我倒是没了解过。

你要是实在怕精度丢失,那就小数点两边分开计算。

var value = 12.09;
value.toString().split('.');

这样不知道能看懂吗

可以试着理解为,前端显示为(元),代码和数据处理用(分),这样运行时则不会有浮点问题,显示的价格只是一个把整数转成除100的2位小数字符串。

按照分来计算 显示的时候除以100

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题