1

我最近正在开发一个基于 flex 3 的结账系统,并且有一个对我来说没有意义的订单总数。我添加了小计、运费和税金。所有 3 个值都四舍五入到小数点后 2 位,但我的答案似乎根本没有四舍五入。

在调查了发生的事情后,我发现任何时候你添加 0.95 和 0.15 而不是得到 1.1,你会得到 1.09999999 重复。从它的变化开始并没有什么不同,在我原来的情况下是(17.95 + 5 + 1.15)。Flex 给了我 24.09999。

是否有一个原因?我可以再次对最终数字进行四舍五入并得到正确的结果,但这种基本算术错误似乎很奇怪。谢谢。

4

1 回答 1

0

由于计算机处理浮点数的方式,它们通常会非常接近您输入的值,但并不完全相同。该数字必须适合固定数量的位,因此会因空间的折衷而损失一些分辨率。这是计算机的限制,而不是灵活的。
一个相当简单的解释
http://joshblog.net/2007/01/30/flash-floating-point-number-errors/
更深入的解释 https://en.wikipedia.org/wiki/Floating_point

于 2013-05-15T20:01:26.953 回答