源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

js数字舍入误差以及解决方法(必看篇)

  • 时间:2021-11-30 10:13 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:js数字舍入误差以及解决方法(必看篇)
[b]1、起因:[/b] [img]http://files.jb51.net/file_images/article/201702/20170228090743.jpg[/img] 返回结果是true。 [b]2、原因:计算机的二进制实现和位数限制有些数无法有限表示。[/b]就像一些无理数不能有限表示,如 圆周率 3.1415926...,1.3333... 等。JS 遵循 IEEE 754 规范,采用双精度存储(double precision),占用 64 bit。 [b]3、解决方法[/b] [b](1)toFixed(),存在兼容性(chrome)[/b] [img]http://files.jb51.net/file_images/article/201702/20170228090757.jpg[/img] [b](2)比较稳妥方法(数字如果过大,也会有误差):[/b] *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数字舍入误差以及解决方法(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程素材网。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部