重写JS保留小数-去尾法
问:为啥写JavaScript的去尾法,网上有一大堆“JS保留小数 去尾法 进一法 四舍五入法”不够我抄的吗?
答:网上找的那段代码,经过一段时间的使用后,发现js浮点数运算不精确,比如将39.8保留两位小数,居然变成了39.79。为了不再继续掉入别人挖的坑,也为了不让新人入坑,决定重写JavaScript的去尾法。如果有不完善的地方,欢迎大家在评论区指正。
工具:Google浏览器 版本 105.0.5195.127(正式版本) (64 位)
文章目录
- 去尾法
- 进一法
- 四舍五入法
- 批评疯传已久的去尾法
- 参考文献
去尾法
这是我的原创方法,返回字符串,如果有不完善的地方,欢迎大家在评论区指正。
//去尾法
Number.prototype.toFloor = function (num) {if (num < 0) {return this;}let nnum = Number.parseFloat(this);let str = nnum.toString();let arr = str.split(".");let strZ = arr[0];//arr[0] 整数部分,arr[1] 小数部分let strX = ""; //小数点与小数部分if (arr.length > 1) {//有小数if (num > 0) {if (arr[1].length >= num) {//小数长,保留位短strX = arr[1].substr(0, num);} else {//小数短,保留位长let zeroArr = [];for (let i = 0; i < num - arr[1].length; i++) {zeroArr.push(0);}strX = arr[1].toString() + zeroArr.join("");}strX = "." + strX;}} else {//无小数if (num > 0) {let zeroArr = [];for (let i = 0; i < num; i++) {zeroArr.push(0);}strX = "." + zeroArr.join("");}}let result = strZ + "" + strX;return result;
};
以下是抄袭网络1…
进一法
抄袭网络,如有不足,请指正。
//进一法
Number.prototype.toCeil = function (num) {return Math.ceil(this * Math.pow(10, num)) / Math.pow(10, num);
};
四舍五入法
我觉得toFixed(num)就很好用啊。
注意:数字.toFiexed(小数位数)返回字符串。
toFixed
1.235.toFixed(2) = 1.24//Google浏览器版本 105.0.5195.127(正式版本) (64 位)结果是 1.24,结果正确。
1.2350001.toFixed(2) = 1.24
抄袭网络
//四舍五入法
Number.prototype.toRound = function (num) {return Math.round(this * Math.pow(10, num)) / Math.pow(10, num);
};
批评疯传已久的去尾法
//去尾法
Number.prototype.toFloor = function (num) {return Math.floor(this * Math.pow(10, num)) / Math.pow(10, num);
};
//举例,将39.8保留两位小数
Math.floor(39.8 * Math.pow(10, 2)) / Math.pow(10, 2); //39.79
Math.floor(38.8 * Math.pow(10, 2)) / Math.pow(10, 2); //38.79
//39.80 * 100 = 3979.9999999999995
参考文献
JS保留小数 去尾法 进一法 四舍五入法[DB|OL]. https://www.cnblogs.com/nbgzc/p/5261015.html ↩︎
重写JS保留小数-去尾法相关推荐
- c语言去尾法和进一法的例子,《去尾法与进一法》教学案例与反思
第1篇:<去尾法与进一法>教学案例与反思 教学内容:教科书第99页,例8.试一试.练一练,练习十九3-6题. 教学目标: 1.进一步理解小数近似数的含义,能根据要求用"四舍五入& ...
- JS保留小数点后有效数字两位
JS保留小数点后有效数字两位 在想保留小数点后有效数字保留两位时,需用到嵌套方法一层一层的去判断当前位数的数字是否为有效数字,但如遇到小数点过多的数字,js语法会将其自动变为科学记数法进行保存,所以在 ...
- 掐头法和去尾法记音标
掐头法和去尾法记音标 一.字母音分类 名称音 发音 二.掐头法 三.a发音 四.去尾法 五.e.i.a区别 i一指 读作一 e两指 a三指 转载于:https://www.cnblogs.com ...
- js保留小数点后两位(js 小数点后两位)
javascript中保留小数点后两位,第三位数字大于1时则进1 function fixN(t,l){ var n=t.toString().split('.')[1][l]; if(n>0& ...
- js ,保留小数点后几位
简单记录一下,以前使用的小数点保留的问题,封装好的函数 // 传值,保留小数点后几位 export function decimal(val: number, index: number): stri ...
- (js)保留小数点后三位
使用lodash兼容性好稳定 import _ from 'lodash'; //数据是嵌套的话 [{name:标题一,data:[122.22222222,1455.555555]},{name:标 ...
- js 保留小数点后两位
var num = 1.257123154315; num = num.toFixed(2); console.log(num); 保留小数点后四位 var num = 1.257123154315; ...
- js保留小数位数,四舍五入和非四舍五入
四舍五入的方式: 这种方式可以使用js自带的函数:value.toFixed(x),x为需要保留的小数位数,不足位数时会补0,value须为Number类型: 例: let data=12.135; ...
- js 保留小数点后两位。或小数点后为0的话 显示为整数
num.toFixed(2) 四舍五入 var num =2.446242342; num = num.toFixed(2); console.log(num); // 2.45 console.lo ...
- js保留小数点后几位小数正则
/^(?!(0[0-9]{0,}$))[0-9]{1,}[.]{0,}[0-9]{0,}$/ 想要几个就在最后加上几 比如我的需求是保留八位小数 /^(?!(0[0-9]{0,}$))[0-9]{1, ...
最新文章
- 如何在Xcode 4中设置NSZombieEnabled?
- iOS程序的启动过程介绍
- go标准库的学习-errors
- Microsoft CryptoAPI加密技术(一)
- 远程管理口怎么看地址_红烧羊肉怎么样做才能滋味浓郁,咸甜适口,且回味有奶香?看这里...
- Crontab- Linux必学的60个命令
- @ARGV:perl命令行参数
- 1.6 分类模型准确性的评估方法
- logrotate 对某个日志的配置
- 【numpy】查询手册
- 怎样使用PDF编辑器删除多余页面
- 文献中数学公式规范复制工具——Mathpix Snip
- 我眼中的架构师:一个优秀的架构师应该具备什么?
- 软件人员kpi制定模板_KPI绩效考核软件有哪些?拥有多种考核模板i人事
- 开发对接微信卡包会员卡_微信公众号实现会员卡领取功能
- linux系统下载18.04,在Ubuntu 18.04系统中下载安装Persepolis Download Manager
- 【论文笔记】基于深度学习的视觉检测及抓取方法
- WORD中表格的跨页显示
- 西安交通大学915考研--编程题Java代码踩坑(2020年真题)
- android按键模拟测试
热门文章
- .net core6 简单控制台读取数据库操作封装
- Excel怎么批量将各数据复制填充指定次数
- JAVA SE — Day 16
- JavaScript实现累加和累乘
- 将pdf拆分成多个pdf
- ftp下载工具绿色版,有没有好用且免费的ftp下载工具绿色版,有几款值得推荐?
- 基于MATLAB/Simulink的电力电子电路仿真技术——直流降压(Buck)变换器及Powergui的使用
- linux的vi编辑器中如何查找内容(关键字)
- 黑群晖二合一安装不了套件_家庭NAS部署指南(二)——如何自己动手安装一台黑群晖主机...
- 华为 手机 能点开USB调试,退出重进再看还是关闭的