博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js精确计算(js浮点数精度问题)
阅读量:7012 次
发布时间:2019-06-28

本文共 651 字,大约阅读时间需要 2 分钟。

转自:

大多数语言在处理浮点数的时候都会遇到精度问题,但是在JS里似乎特别严重,来看一个例子

alert(45.6*13);

结果居然是592.800000000001,当然加法之类的也会有这个问题

那这是js的错误吗?

当然不是,你的电脑做着正确的二进制浮点运算,但问题是你输入的是十进制的数,电脑以二进制运算,这两者并不是总是转化那么好的,有时候会得到正确的结果,但有时候就不那么幸运了

alert(0.7+0.1);//输出0.7999999999999999alert(0.6+0.2);//输出0.8

你输入两个十进制数,转化为二进制运算过后再转化回来,在转化过程中自然会有损失了

但一般的损失往往在乘除运算中比较多,而JS在简单的加减法里也会出现这类问题,你也看到了,这个误差也是非常小的,但是却是不该出现的

那该怎么解决呢,ECMA4似乎给了解决方法,但是现在倒不是那么实用的

一种方法,比如0.7+0.1,先把0.1和0.7都乘10,加完之后再除10

另外可以自己写点函数来解决这个问题,自己百度谷歌一下应该有很多,但是最好还是不要用JS做一些复杂的浮点运算,毕竟JS更多的作用不在于此

      

 

另附一篇:

 这篇精度有问题, 是通过评论区accAdd(132476.05,32188.51) 校验, 评论区的回复, 修改了依然有问题. 还是用上面的iTeye的大神写的吧.  

 

转载于:https://www.cnblogs.com/yadongliang/p/9067333.html

你可能感兴趣的文章
auto和100%的区别
查看>>
OpenCV中的神器Image Watch
查看>>
Oracle 获取本周、本月、本季、本年的第一天和最后一天(转载)
查看>>
动态规划入门
查看>>
Linux学习笔记:重定向>和>>
查看>>
webpack 代码分离
查看>>
PathFileHelper GZipFileHelper (Decompress)
查看>>
[树结构]有实际用途的树的计算公式
查看>>
解决Chrome账户不能登录无法同步书签问题
查看>>
客户端存在潜在危险request.from
查看>>
236. Lowest Common Ancestor of a Binary Tree
查看>>
HDU 4057 AC自动机+状态压缩DP
查看>>
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-qvc66dfs/supervisor/
查看>>
HTML5 新增语义化标签
查看>>
Git-Notes
查看>>
统计n个随机数(随机0~10),每出现一次就用*号在数字下面写一次*【c语言实现】...
查看>>
linu学习记录--初学linux中的几个基本命令以及比较关键的man指令
查看>>
mvc form
查看>>
Cmake 01
查看>>
There is no result type defined for type 'json' mapped with name 'success'. Did you mean 'json'?
查看>>