js浮点数运算需要注意的问题
2017-07-27 19:32
225 查看
最近在js运算浮点数时发现了一个问题。问题是这样的:js函数中处理两个浮点数的相加,为了防止出现0.1+0.2=0.30000000000000004的问题,两个数都先乘以10000后再相加,得到结果后再除以10000.代码逻辑大概如下:
在这里并没有得到想要的375.24.
经过一番搜索后,发现是在第6行相加的时候出现了舍入误差。处理方法虽然有一些,但是并不是很好,例如将计算结果toFixed(n),n为需要的精度。但是toFixed()返回的是字符串。
推荐还是找个专门的js库来处理这个问题。
http://mathjs.org/
1 var num1 = 95.40; 2 var num2 = 279.84; 3 var amtSum = 0*1; 4 5 amtSum = amtSum + num1 *10000; 6 amtSum = amtSum + num2 *10000; 7 var tmp = (amtSum /10000)//结果是375.23999999999995
在这里并没有得到想要的375.24.
经过一番搜索后,发现是在第6行相加的时候出现了舍入误差。处理方法虽然有一些,但是并不是很好,例如将计算结果toFixed(n),n为需要的精度。但是toFixed()返回的是字符串。
推荐还是找个专门的js库来处理这个问题。
http://mathjs.org/
相关文章推荐
- JS学习笔记——在浏览器中处理复杂运算需要注意的问题
- js浮点数运算需要注意的问题
- 书写SQL需要注意的若干问题
- 网站建设需要注意的问题
- 文件读取需要注意的相关问题
- tomcat中的server.xml文件配置了URIEncoding="UTF-8"需要注意的问题
- 使用svn需要注意的问题
- 使用hadoop ecipse插件需要注意的问题
- .NET和JavaScript/JQuery进行交互时需要注意的问题
- AJAX解决什么问题?如何使用AJAX?AJAX有什么问题需要注意?项目中哪里用到了AJAX?
- 用UML建模需要注意的问题
- 获取文件路径时需要注意的问题
- 做乘法运算的时候需要考虑越界问题
- 【转】使用C#通过Oracle.DataAccess连接Oracle,部署时需要注意版本问题
- RDLC 本地报表引用自定义程序集需要注意的问题
- [置顶] android高性能编程中需要注意的问题
- 字符串转换为整数问题中需要注意的问题——溢出问题
- 关于静默安装需要注意的一些问题(转)
- Qt 多线程与数据库操作需要注意的几点问题(QSqlDatabase对象只能在当前线程里使用)
- iOS8适配中需要注意的几个问题