javascript添加会产生奇怪的小数问题
javascript Addition creates weird decimal issue
可能重复:
JavaScript浮点数字问题的优雅解决方案
为什么使用javascript将两个数字相加时,会返回疯狂的小数点?
如果我在纸上加285.72+142.86,等于428.58,你可以用计算器得到同样的答案。
然而,如果我从2个文本框中添加该数字,它将返回428.58000000000004
示例
我需要我的javascript返回428.58。我知道我可以使用.toFixed((,但我宁愿不使用,因为我不明白为什么把两个数字加在一起会在小数点后产生如此疯狂的位数。
不是所有的数字都可以精确地用浮点重复。进行近似运算,当你对一个未执行的数字进行一次又一次的运算时,情况会变得更糟。
有关示例,请参阅此维基百科条目:http://en.wikipedia.org/wiki/Floating_point#Accuracy_problems
如果您将加法输入更改为可以用浮点(如1/8(精确表示的内容,它就会起作用。试试数字:285.125和142.125。
微软.NET也有类似的行为:
float x = 285.72f
float y = 142.86f
float z = x + y
结果:z=428.580017
您必须使用.toFixed,因为Javascript使用IEEE 754-2008浮点算法会导致这种行为。这些二进制浮点数只是近似值,所以必须使用四舍五入。
这是因为浮点运算不使用某些十进制数的精确表示,因此可能会出现算术不精确的情况。除了把数字四舍五入到你需要的精度之外,我不知道还有什么更好的方法,比如toFixed
做
http://www.mredkj.com/javascript/nfbasic2.html
- 在指令控制器中使用$attrs时出现问题
- 将PHP变量传递给jQuery时遇到问题
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- 参数变量出现ngTable指令问题
- 剑道网格jQuery动画()问题
- 我的jQuery插件参数没有正确启动,遇到了问题
- 货币代码为欧元-金额的格式不应包含小数
- Phonegap-(安卓/iphone)多个图像的图像库出现问题
- TableExport jquery插件:文件名和扩展名问题
- JavaScript Pub/Sub属性访问问题
- JavaScript异步问题
- 如何解决Yii中的页面刷新问题
- Safari(Mac OS)上的jQuery平滑滚动问题
- jqGrid树网格问题
- 小数、逗号和客户端验证的问题
- angularJS 和 JavaScript 数学小数问题
- 使用小数的Javascript操作符问题
- Javascript四舍五入到所需的小数位数问题
- javascript添加会产生奇怪的小数问题
- 如何在Javascript中乘法?小数的问题