前端开发中经常会碰到用 JavaScript 格式化数字,最最常见的是格式化金额,一般格式化金额需要千分位分隔,保留2位小数等等。

还有偶然会遇到的使用 js 计算浮点数时出现误差。

完善的功能函数推荐文章(标题内容):http://www.css88.com/archives/7324#more-7324

JavaScript 浮点数计算精度问题简单解决

摘要: 
由于计算机是用二进制来存储和处理数字,不能精确表示浮点数,而JavaScript中没有相应的封装类来处理浮点数运算,直接计算会导致运算精度丢失。

JavaScript 中的所有数据都是以 64 位浮点型数据(float) 来存储。所有的编程语言,包括 JavaScript,对浮点型数据的精确度都很难确定。

console.log( 0.1 + 0.2 );  //0.30000000000000004

方法一:使用 toFixed 进行四舍五入指定要保留的小数位数

console.log(( 0.1 + 0.2 ).toFixed(1)); // 0.3

缺点:其实不精确,特别对于计算金额类的严谨问题不推荐使用,且不同浏览器对其计算结果存在差异。

方法二:把需要计算的数字升级(乘以10的n次幂)成计算机能够精确识别的整数,等计算完毕再降级(除以10的n次幂),这是大部分编程语言处理精度差异的通用方法。

console.log((0.1*10 + 0.2*10)/10); // 0.3

额外:http://blog.csdn.net/u012143360/article/details/53148591

通过将浮点数转换成整数进行计算,然后再将整数的小数点位调整,转回正确的浮点数结果。

console.log(6.8-0.9);  // 5.8999999999999995console.log(Math.round((6.8-0.9)*10)); // 59Math.formatFloat = function (f, digit) {var m = Math.pow(10, digit); return Math.round(f * m, 10) / m;};console.log(Math.formatFloat(6.8-0.9,2)); // 5.9

12年的前辈总结:http://blog.51cto.com/xzllff/831241

13年自定义函数:https://www.cnblogs.com/wangkongming/archive/2013/01/18/2866788.html

17年css88加减乘除函数:http://www.css88.com/archives/7340

转载于:https://www.cnblogs.com/DoubleLoong/p/8310337.html

JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去… 及其浮点数计算精度问题(推荐的类库 Numeral.js 和 accounting.js)...相关推荐

  1. 将数字金额转化为大写金额,且数字金额最多只保留两位小数

    采用element ui 中的input框实现,填写小写金额,自动实现大写金额 截图: 代码: 数字转大写金额实现: export function dealBigMoney(n) {var frac ...

  2. 格式金额,默认保留两位小数,并格式化为千分位

    项目场景: 商城类项目中大多需要格式化金额,后缀保留两位小数,并且千元之后加上千分位符号 例子:32,131.00 这种金额,贴上js代码,可以新建一个js引用就行 解决方案: //格式金额,默认保留 ...

  3. 千分位、两位小数的展示

    #千分位的使用 一般我会现在公共js文件写这个方法 如:在utils/amount.js 文件内写一个公共方法: /*** @description 处理金额数为"千分位"和两位小 ...

  4. 【java保留两位小数并舍去.00】

    java保留两位小数并舍去.00 new DecimalFormat("#.##").format(Double.valueOf(String.format("%.2f& ...

  5. js金额价格四舍五入保留2位小数demo效果(整理)

    四舍五入保留2位小数(不够位数,则用0替补) function keepTwoDecimalFull(num) {var result = parseFloat(num);if (isNaN(resu ...

  6. mysql保留2位小数字段如何设置 浮点数

    保留2位小数字段如何设置 方法1: select cast(avg(75.3333333) as decimal(10,2)) as '平均分' 方法2:SELECT FORMAT(12562.665 ...

  7. el-input 输入框类型;只能输入数字的输入框;保留两位小数输入框;只能输入正整数和0的输入框;手机号正则校验;车牌号码正则校验

    以下代码可直接复制使用: 以下代码可直接复制使用! <template><div><a href="https://baike.baidu.com/item/% ...

  8. python根据圆半径计算圆面积、结果保留两位小数_根据圆半径计算圆面积,结果保留两位小数。其中,圆周率使用 3.1415...

    山东省安监局规定:特种作业操作证申请复审或者延期复审前,特种作业人员应当参加()学时时安全培训. 企业应该激发出内部员工的能量,形成内部人才市场. 考察心血管系统发育状况的基本生理功能指标是() 放射 ...

  9. js金额千分位显示_JavaScript 格式化数字、金额、千分位、保留几位小数

    JS对货币格式化函数 方法一:保留2位小数 /** * 将数值四舍五入(保留2位小数)后格式化成金额形式 * * @param num 数值(Number或者String) * @return 金额格 ...

最新文章

  1. 一定要加强SQL数据库SA
  2. matlab x12,用MATLAB最优化工具箱的相关函数编程求解: minf(X)=x12+2x22一2x1x2—4x1,X0=[0,0]T...
  3. 模式识别 - 处理多演示样例学习(MIL)特征(matlab)
  4. cellphonedb 及其可视化
  5. C语言实现linear search线性搜索算法(附完整源码)
  6. SAP Spartacus baseSite 出现在 OCC 请求 url 中
  7. jupyter配置到服务器_服务器端jupyter notebook映射到本地浏览器的操作
  8. Teamcenter Web 端自动登录 (SSO)
  9. android am start activity,adb shell am start -n package/.XXXactivity命令学习汇总
  10. QC4+充电协议_一文看懂各家充电协议!总算彻底理清了
  11. 计算机网络里ping是什么意思,Ping命令有什么作用,Ping通后显示的数据是什么意思?...
  12. Simulink Solver
  13. excel表格怎么换行?单元格内换行的4个方法
  14. 【51单片机】霹雳灯实验代码
  15. 基于Java的实时通信软件的设计(类似微信)
  16. 微信公众号推文(编辑+排版教程)
  17. JavaScript是解释型语言--V8、JIT
  18. 新用户腾讯云国外服务器2核4G服务器使用攻略
  19. VUE项目学习(二):学习项目文件结构
  20. 刀片服务器在哪看cpu型号,了解认识刀片服务器

热门文章

  1. 公司注册资金认缴和实缴有什么区别
  2. 50道简单易学的家常菜谱(附图) - 生活至上,美容至尚!
  3. MAC OS 苹果系统如何安装FileZilla上传程序
  4. LaTeX软件的使用
  5. latex 分行 表格标题过长_使用latex软件,其页眉显示标题内容,由于标题太长,不能一行显示,如何使页眉显示多行,谢谢...
  6. 服务器如何安装微软,新至强服务器上安装Hyper-V(一)
  7. 惠普开源的通信测试工具Seagull的安装体会
  8. 如何使用Graphics绘制图像
  9. python基础之数据类型与变量patr2
  10. 华笙(华升)5.1,5.2,6.3