• 2022-07-03
宇哥博客 前端开发 Javascript两个数相乘出现很多位小数

Javascript两个数相乘出现很多位小数

trojan
MoFast

JS中两个数字相乘,当有小数的时候,结果可能出现很多位小数。

23*0.1
//结果:2.3000000000000003
23.08*0.02
//结果:0.46159999999999995
223*0.1
//结果:22.3

出现这情况是因为运算的时候先把浮点数转化成二进制再进行运算,有的小数在转换成二进制的时候出现无限循环,从而导致运算出现误差,其它语言中也有类似情况。

//Java语言
System.out.println(23*0.1);
//结果:2.3000000000000003

解决办法

可以用toFixed()方法可把 Number 四舍五入为指定小数位数的数字。

23.08*0.02
//结果:0.46159999999999995
(23.08*0.02).toFixed(2)
//结果:'0.46'
(23.08*0.02).toFixed(3)
//结果:'0.462'
(223*0.1).toFixed(2)
//结果:'22.30'

如果不要四舍五入可以floor()方法,floor()方法返回小于等于x的最大整数。

Math.floor(1.3);
//结果:1
Math.floor(1.6);
//结果:1
Math.floor(23.08*0.02*100)/100
//结果:0.46
Math.floor(23.08*0.02*1000)/1000
//结果:0.461
Math.floor(23.08*0.02*10000)/10000
//结果:0.4616
Math.floor(23.08*0.02*100000)/100000
//结果:0.46159
本文来自网络,不代表本站立场,转载请注明出处。http://www.ygbks.com/2728.html

发表评论

您的电子邮箱地址不会被公开。

返回顶部