问:为啥写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

参考文献


  1. JS保留小数 去尾法 进一法 四舍五入法[DB|OL]. https://www.cnblogs.com/nbgzc/p/5261015.html ↩︎

重写JS保留小数-去尾法相关推荐

  1. c语言去尾法和进一法的例子,《去尾法与进一法》教学案例与反思

    第1篇:<去尾法与进一法>教学案例与反思 教学内容:教科书第99页,例8.试一试.练一练,练习十九3-6题. 教学目标: 1.进一步理解小数近似数的含义,能根据要求用"四舍五入& ...

  2. JS保留小数点后有效数字两位

    JS保留小数点后有效数字两位 在想保留小数点后有效数字保留两位时,需用到嵌套方法一层一层的去判断当前位数的数字是否为有效数字,但如遇到小数点过多的数字,js语法会将其自动变为科学记数法进行保存,所以在 ...

  3. 掐头法和去尾法记音标

    掐头法和去尾法记音标 一.字母音分类 名称音  发音 二.掐头法 三.a发音 四.去尾法 五.e.i.a区别 i一指   读作一 e两指 a三指 转载于:https://www.cnblogs.com ...

  4. js保留小数点后两位(js 小数点后两位)

    javascript中保留小数点后两位,第三位数字大于1时则进1 function fixN(t,l){ var n=t.toString().split('.')[1][l]; if(n>0& ...

  5. js ,保留小数点后几位

    简单记录一下,以前使用的小数点保留的问题,封装好的函数 // 传值,保留小数点后几位 export function decimal(val: number, index: number): stri ...

  6. (js)保留小数点后三位

    使用lodash兼容性好稳定 import _ from 'lodash'; //数据是嵌套的话 [{name:标题一,data:[122.22222222,1455.555555]},{name:标 ...

  7. js 保留小数点后两位

    var num = 1.257123154315; num = num.toFixed(2); console.log(num); 保留小数点后四位 var num = 1.257123154315; ...

  8. js保留小数位数,四舍五入和非四舍五入

    四舍五入的方式: 这种方式可以使用js自带的函数:value.toFixed(x),x为需要保留的小数位数,不足位数时会补0,value须为Number类型: 例: let data=12.135; ...

  9. js 保留小数点后两位。或小数点后为0的话 显示为整数

    num.toFixed(2) 四舍五入 var num =2.446242342; num = num.toFixed(2); console.log(num); // 2.45 console.lo ...

  10. js保留小数点后几位小数正则

    /^(?!(0[0-9]{0,}$))[0-9]{1,}[.]{0,}[0-9]{0,}$/ 想要几个就在最后加上几 比如我的需求是保留八位小数 /^(?!(0[0-9]{0,}$))[0-9]{1, ...

最新文章

  1. 如何在Xcode 4中设置NSZombieEnabled?
  2. iOS程序的启动过程介绍
  3. go标准库的学习-errors
  4. Microsoft CryptoAPI加密技术(一)
  5. 远程管理口怎么看地址_红烧羊肉怎么样做才能滋味浓郁,咸甜适口,且回味有奶香?看这里...
  6. Crontab- Linux必学的60个命令
  7. @ARGV:perl命令行参数
  8. 1.6 分类模型准确性的评估方法
  9. logrotate 对某个日志的配置
  10. 【numpy】查询手册
  11. 怎样使用PDF编辑器删除多余页面
  12. 文献中数学公式规范复制工具——Mathpix Snip
  13. 我眼中的架构师:一个优秀的架构师应该具备什么?
  14. 软件人员kpi制定模板_KPI绩效考核软件有哪些?拥有多种考核模板i人事
  15. 开发对接微信卡包会员卡_微信公众号实现会员卡领取功能
  16. linux系统下载18.04,在Ubuntu 18.04系统中下载安装Persepolis Download Manager
  17. 【论文笔记】基于深度学习的视觉检测及抓取方法
  18. WORD中表格的跨页显示
  19. 西安交通大学915考研--编程题Java代码踩坑(2020年真题)
  20. android按键模拟测试

热门文章

  1. .net core6 简单控制台读取数据库操作封装
  2. Excel怎么批量将各数据复制填充指定次数
  3. JAVA SE — Day 16
  4. JavaScript实现累加和累乘
  5. 将pdf拆分成多个pdf
  6. ftp下载工具绿色版,有没有好用且免费的ftp下载工具绿色版,有几款值得推荐?
  7. 基于MATLAB/Simulink的电力电子电路仿真技术——直流降压(Buck)变换器及Powergui的使用
  8. linux的vi编辑器中如何查找内容(关键字)
  9. 黑群晖二合一安装不了套件_家庭NAS部署指南(二)——如何自己动手安装一台黑群晖主机...
  10. 华为 手机 能点开USB调试,退出重进再看还是关闭的