0

我有两个 Number 类型的变量,但它们的总和不正确。

这是我的场景:

var a:Number = 1.1;
var b:Number = 2.2;
var c:Number = a + b;

c 的结果是 3.3000000003 而不是 3.3

我该如何解决这个问题?

显然样本中'a'和'b'的精度是逗号后的1个数字,但可以是多个。

4

1 回答 1

1

这种预期的行为。实际上,在二进制数系统中表示某些数字非常困难。一个接近的aprox。将导致:

1.00011001100110011001100110011001... (1.09999..)

可悲的是 1.2 同样困难:

1.00110011001100110011001100110011... (1.19999..)

您可能会注意到 1100 不断重复。就像不可能用十进制表示 1/3 一样。

解决方案可能是通过舍入 c 来降低精度。

trace(c.ToString(1));
于 2013-07-13T11:00:35.840 回答