JavaScript中精度问题以及解决方案
JavaScript 中使用的是 64 位双精度浮点数来存储数字。可以表示的数字的绝对值范围大约是:-1.79E+308 ~ +1.79E+308。超出这个范围的数就不一定能准确表示,就会产生精度问题。而计算机计算时是二进制,技术完成转换为十进制就超出了范围。
JavaScript中精度丢失的经典问题
浮点精度
1 |
|
大数精度
1 |
|
解决方案
将浮点数乘以10^n使其成为整数,计算后再将结果除以10^n,n为他们之中最大的小数位。比如0.1 + 0.2,可以转化为(0.110+0.210)/10。不过如果小数位太多可能造成大数精度问题,不过一般不会用到超大整数。这里只针对一般类似电商使用的小金额。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!