当前位置: 首页 > news >正文

seo网站建站微信网页版登录手机版下载

seo网站建站,微信网页版登录手机版下载,威海外贸网站建设电话,学做凉菜冷菜的网站toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。例如将数据Num保留2位小数#xff0c;则表示为#xff1a;toFixed(Num)#xff1b;但是其四舍五入的规则与数学中的规则不同#xff0c;使用的是银行家舍入规则#xff0c;银行家舍入#xff1a;所谓银行家舍入… toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。例如将数据Num保留2位小数则表示为toFixed(Num)但是其四舍五入的规则与数学中的规则不同使用的是银行家舍入规则银行家舍入所谓银行家舍入法其实质是一种四舍六入五取偶又称四舍六入五留双法。具体规则如下简单来说就是四舍六入五考虑五后非零就进一五后为零看奇偶五前为偶应舍去五前为奇要进一。 经测试发现在chorme下面并没有完全遵守这个规则尤其是5的后面没有数字的时候不是这么判断的如下 var b 1.335b.toFixed(2)1.33var b 1.345b.toFixed(2)1.34var b 1.355b.toFixed(2)1.35var b 1.365b.toFixed(2)1.36var b 1.375b.toFixed(2)1.38var b 1.385b.toFixed(2)1.39 可以发现在chorme下没有完全去遵循这个规律或许它有自己的算法但是毕竟它没有遵循通用的银行家算法所以tofixed这个方法在涉及到金钱计算的业务中还是少用. 总而言之不论引入toFixed解决浮点数计算精度缺失的问题也好它有没有使用银行家舍入法也罢都是为了解决精度的问题但是又离不开二进制浮点数的环境但至少他帮助我们找到了问题所在从而让我们有解决方法。 一开始的办法是把要四舍五入的后一位单独拎出来单独判断。 解决方法 通过重写toFixed方法 Number.prototype.toFixed function (n) {let result number.toString();const arr result.split(.);const integer arr[0];const decimal arr[1];result integer . decimal.substr(0, n);const last decimal.substr(n, 1); // 四舍五入转换为整数再处理避免浮点数精度的损失 if (parseInt(last, 10) 5) {const x Math.pow(10, n);result ((parseFloat(result) * x) 1) / x;result result.toFixed(n);}return result;} 然后又发现计算机二进制编码导致的精度问题详见上一篇博客。 自己debugger发现页面中的js进了死循环。很明显问题出在toFixed中回调了toFixed结果没有走出来继续debugger又有了惊人的发现。以下是控制台测试 console.log(2.115 * 100) // 211.50000000000003console.log(2.0115 * 1000) // 2011.4999999999998 既然你一直进入循环我就手动把你拉出来。 result (Math.round((parseFloat(result)) * x) 1) / x; 最终完整的重写toFixed的方法 // toFixed兼容方法Number.prototype.toFixed function (n) {if (n 20 || n 0) {throw new RangeError(toFixed() digits argument must be between 0 and 20);}const number this;if (isNaN(number) || number Math.pow(10, 21)) {return number.toString();}if (typeof (n) undefined || n 0) {return (Math.round(number)).toString();}let result number.toString();const arr result.split(.);// 整数的情况if (arr.length 2) {result .;for (let i 0; i n; i 1) {result 0;}return result;}const integer arr[0];const decimal arr[1];if (decimal.length n) {return result;}if (decimal.length n) {for (let i 0; i n - decimal.length; i 1) {result 0;}return result;}result integer . decimal.substr(0, n);const last decimal.substr(n, 1);// 四舍五入转换为整数再处理避免浮点数精度的损失if (parseInt(last, 10) 5) {const x Math.pow(10, n);result (Math.round((parseFloat(result) * x)) 1) / x;result result.toFixed(n);}return result;}
http://www.hkea.cn/news/14583927/

相关文章:

  • 著名的深圳网站建设鞍山做网站或
  • 淮南家政网站建设地址网站开发视频会议插件
  • 网站建设长春网站建设公司易下拉软件
  • 医药公司网站建设珠宝网站开发的背景
  • 做得比较好的公司网站做网站哪个便宜
  • 网站建设风险评估个人网页模板免费下载
  • 网站域名解析页面太原网络广告公司
  • 企业网站建设成本qq刷网站空间
  • 网站的申请网站推广方案中评价效果是指
  • 大网站设计wordpress 如何去掉图片地址
  • 外链建设都需要带网站网址注册公司材料怎么准备
  • 做餐饮加盟的网站常州做半导体的公司
  • 社交网站做强自己做网站的步骤
  • 东莞网站建设用哪种好网站建设与管理插图
  • 上海网站建设收费小豹子韬韬是哪个网站做的
  • 永康电子商务网站建设公司网上怎么查公司信息
  • 怎么在网站空间上传文件p2p理财网站开发流程图
  • 做网站的html代码格式网页制作公司有哪些职位
  • 网站开发软件d网站网络推广
  • 网站免费推广平台php网站开发范例
  • 网站设计可以吗做一个网站花费多少钱
  • 有没有介绍做私家导游的网站东莞seo技术培训
  • 网站js聊天代码企业如何在工商网站上做公示
  • 郑州php网站开发培训wap网站是什么意思啊
  • 无锡市住房建设局网站wordpress新建页面子页面
  • 基于flash网站设计公司网站制作注意什么
  • 泉州做网站优化的公司燕郊网站制作
  • 如何获取网站开发语言广州免费旅游景点大全
  • 做网站在桂林网站seo
  • 海南建设大厅网站网站如何被谷歌收录