为了账号安全,请及时绑定邮箱和手机立即绑定

js 浮点数丢失

js 浮点数丢失

繁花不似锦 2019-03-14 17:15:43
一个货物网站商品的价格是float,(例如12.09) 当用户在购买多个商品时,这个时候怎么做计算啊? 浮点数,貌似是会丢失精度,有什么方法可以实现准确的计算?
查看完整描述

4 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

可以将整数和小数拆开计算。举一个加法计算的小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));


查看完整回答
反对 回复 2019-03-21
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

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


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


var value = 12.09;

value.toString().split('.');

这样不知道能看懂吗


查看完整回答
反对 回复 2019-03-21
?
慕标5832272

TA贡献1966条经验 获得超4个赞

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


查看完整回答
反对 回复 2019-03-21
  • 4 回答
  • 0 关注
  • 562 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信