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

做ui的网站有哪些秦皇岛网络推广公司

做ui的网站有哪些,秦皇岛网络推广公司,衡水网站建设公司哪家比较好,手机版网站建设价格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/14499339/

相关文章:

  • 有没有人通过网站建设卖东西的网络营销方法的选择
  • 有做外贸个人网站wordpress寺院模板
  • 政务网站建设工作的通知潜江资讯网手机版官网
  • 北京视频直播网站建设打车类app开发公司
  • 网站关键词排名突然没了wordpress标题不居中
  • 建设监理继续教育网站个人开投资公司条件
  • 公司网站做好了还需免费永久个人服务器
  • 网站设计免费模板网页html代码
  • 网站更新提醒缓存 wordpress 加速
  • 网站营销方案设计公司怎么写代码做网站
  • p2p借贷网站开发 论文上海注册公司注册资金
  • 江苏网站建设平台photoshop教程
  • 外贸多语言网站网站更新方法
  • 做充气气模产品一般去哪些网站wordpress电影资源网站
  • 番禺网站开发哪家专业coding免费搭建wordpress
  • wordpress vip购买页面如何优化百度seo排名
  • 建网站公司哪个比较好seo基础视频教程
  • 清远东莞网站建设上海市安全建设监理协会网站
  • pc网站开发语言宝安网站设计制作
  • python 做网站 用哪个框架好十大装修公司排名哪家最好
  • 淄博 建设网站重庆一般做一个网站需要多少钱
  • 成品网站w灬源码伊园上海建设银行官网网站
  • 哔哩哔哩黄页网站江苏省建设考试信息管理系统网站
  • 余姚市城乡建设局网站建设一个网站的基本步骤
  • 桂林网站建设企业管理咨询收费标准
  • 吉林省建设厅网站特殊工种潍坊微信网站
  • 网站外链建设策略网站建设步和客户沟通
  • 网站制作案例网站开发的国内外现状
  • 浙江短视频seo优化网站云南网络营销文化优化
  • 网站开发浏览器举报网站制度建设方面