js数字舍入误差以及解决方法(必看篇)
2019/6/27 21:08:09
本文主要是介绍js数字舍入误差以及解决方法(必看篇),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1、起因:
返回结果是true。
2、原因:计算机的二进制实现和位数限制有些数无法有限表示。就像一些无理数不能有限表示,如 圆周率 3.1415926...,1.3333... 等。JS 遵循 IEEE 754 规范,采用双精度存储(double precision),占用 64 bit。
3、解决方法
(1)toFixed(),存在兼容性(chrome)
(2)比较稳妥方法(数字如果过大,也会有误差):
*JS 中能精准表示的最大整数是 Math.pow(2, 53),十进制即 9007199254740992。 大于 9007199254740992 的可能会丢失精度
function round(num,d){ //Step1:将num放大10的d次方倍 num*=Math.pow(10,d); //Step2:对num四舍五入取整 num = Math.round(num); //Step:返回num缩小10的d次方倍,获得最终结果 return num/Math.round(10,d); } console.log(round(123.456)); //123.46
以上这篇js数字舍入误差以及解决方法(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持找一找教程网。
这篇关于js数字舍入误差以及解决方法(必看篇)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-30React Native常用组件-点击组件
- 2024-05-30uniapp+vue3+uv-ui手机端后台OA管理模板
- 2024-05-29Python网络爬虫的时候json=就是让你少写个json.dumps()
- 2024-05-27React Native常用组件-展示组件
- 2024-05-27React Native常用组件-列表组件
- 2024-05-09vue3开发前端表单缓存自定义指令,移动端h5必备插件
- 2024-05-09React Hooks在class组件中的使用方式
- 2024-03-30[OIDC in Action] 2. 基于OIDC(OpenID Connect)的SSO(纯JS客户端)
- 2024-03-29terraform jsonencode
- 2024-03-13vuex-persist