-
Notifications
You must be signed in to change notification settings - Fork 13
Open
Labels
Description
1、为什么会有数字精度问题的存在?
在转换为二进制的科学记数法的形式时只保留64位有效的数字,此时只能模仿十进制进行四舍五入了,但是二进制只有 0 和 1 两个,于是变为 0 舍 1 入。在这一步出现了错误,那么一步错步步错,那么在计算机存储小数时也就理所应当的出现了误差。这即是计算机中部分浮点数运算时出现误差,这就是丢失精度的根本原因
2、什么情况下会有精度问题?什么情况下不会有精度问题?
出现精度问题的情况:
浮点数精度问题,比如 0.1 + 0.2 !== 0.3
大数精度问题,比如 9999 9999 9999 9999 == 1000 0000 0000 0000 1
toFixed 四舍五入结果不准确,比如 1.335.toFixed(2) == 1.33
其中大数精度问题可以通过BigInt类型来解决
3、如何解决?
4、我实际使用的例子:
分转元
参考
(JavaScript 中精度问题以及解决方案)[https://www.runoob.com/w3cnote/js-precision-problem-and-solution.html]
https://segmentfault.com/a/1190000021684144
https://zhuanlan.zhihu.com/p/100353781
(定点数和浮点数)[https://segmentfault.com/a/1190000024485146]
https://juejin.cn/post/6844903601601511431
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/BigInt
Reactions are currently unavailable