分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

js中Number.toFixed()方法的理解

发布时间:2023-09-06 01:47责任编辑:蔡小小关键词:js

需求:对浮点数进行四舍五入精度获取。

问题:直接使用Number.toFixed()会出现异常的舍入情况。

原因:计算机浮点数存储是二进制,js的Number.toFixed()实际的精度确认规则是四舍六入五成双,逢四下舍,逢六入一,逢五时,根据浏览器内核计算结果也不尽相同。

   具体原理这里不做详细描述,各位看官可自行查阅相关资料。

解决方法:重新Number.toFixed()方法。

实现原理:将浮点数转化为整数,保留所需位数,再转为浮点数。

实现代码:

 1 Number.prototype.toFixed = function (length) { 2 ????var s = this + ‘‘; 3 ????var len = length || 0; 4 ????var result = s; 5 ????var arr = s.split(‘.‘); 6 ?7 ????//整数 8 ????if (arr.length < 2) { 9 ????????if (len > 0) {10 ????????????result += ‘.‘;11 ????????????for (var i = 1; i <= len; i++) {12 ????????????????result += ‘0‘;13 ????????????}14 ????????}15 ????????return result;16 ????}17 18 ????//小数19 ????var first = arr[0];20 ????var second = arr[1];21 22 ????//小数点位数等于length23 ????if (second.length == len) {24 ????????return result;25 ????}26 27 ????//小数点位数小于length28 ????if (second.length < len) {29 ????????for (var k = 1; k <= len - second.length; k++) {30 ????????????result += ‘0‘;31 ????????}32 ????????return result;33 ????}34 35 ????//小数点位数大于length36 ????result = first + second.substr(0, len + 1);37 ????var last = Math.floor((result * 1 + 5) / 10);38 ????result = (last / Math.pow(10, len)).toFixed(len);39 ????return result;40 };

备注:解决方案有很多种,这只是个人的理解,仅供参考。

js中Number.toFixed()方法的理解

原文地址:https://www.cnblogs.com/ygjoe/p/8708820.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved