-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
腾讯:js中精度问题及解决方案(一面) #34
Comments
js精度问题1.浮点数精度问题 2.大数精度问题 浮点数精度问题,比如 0.1 + 0.2 !== 0.3 四舍五入 toFixed()方法
round()、floor()、ceil() 等都不能真正的四舍五入,有精度问题。 ES6 在Number对象上面,新增一个极小的常量Number.EPSILON。它表示 1 与大于 1 的最小浮点数之间的差。
[MIN_SAFE_INTEGER, MAX_SAFE_INTEGER] 的整数都可以精确表示,但是超出这个范围的整数就不一定能精确表示。这样就会产生所谓的大数精度丢失问题。 解决思路首先考虑的是如何解决浮点数运算的精度问题,有 3 种思路:
所以,最终考虑使用第三种方案,目前已经有了很多较为成熟的库,比如 bignumber.js,decimal.js,以及big.js等。
以上方法虽然不会产生精度问题,但是它有一点小陷阱容易忽略。 特殊精度解决方案
将浮点数转为整数运算,运算结果附上小数点 的
|
面试公司:
腾讯
面试环节:
一面
问题:
遇到过js精度问题吗?是怎么解决的?
The text was updated successfully, but these errors were encountered: