84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
想对数字截取后转为百分比,居然100*(0.002812.toFixed(4))不是0.28?
100*(0.002812.toFixed(4))
认证0级讲师
进行*100运算的时候,toFixed()得到的string 已经隐式转换变成number。
然后二进制数不能精确表示0.0028 (1.01101111..._2×2^-9),也不能精确表示0.28 (0.010001111010111..._2x2^0)所以只好截取掉一部分。
这样应该可以(100*0.002812).toFixed(2)
浮点数不能精确表示,是所有编程语言共有的问题。因为浮点数在计算机内部也是用二进制存储的。 所以一位小数,比如0.1-0.9中只有0.5是可以精确表示的,因为0.5是1的一半。
0.1-0.9
0.5
所以一般涉及金融行业和钱相关的敏感数据存储,几分钱,几毛钱都是用整数来存的。
推荐一篇博客吧,题主有兴趣可以看一看~。代码之谜(五)- 浮点数(谁偷了你的精度?)
进行*100运算的时候,toFixed()得到的string 已经隐式转换变成number。
然后二进制数不能精确表示0.0028 (1.01101111..._2×2^-9),也不能精确表示0.28 (0.010001111010111..._2x2^0)所以只好截取掉一部分。
这样应该可以(100*0.002812).toFixed(2)
浮点数不能精确表示,是所有编程语言共有的问题。因为浮点数在计算机内部也是用二进制存储的。
所以一位小数,比如
0.1-0.9
中只有0.5
是可以精确表示的,因为0.5
是1的一半。所以一般涉及金融行业和钱相关的敏感数据存储,几分钱,几毛钱都是用整数来存的。
推荐一篇博客吧,题主有兴趣可以看一看~。代码之谜(五)- 浮点数(谁偷了你的精度?)