我有两个Number类型的变量,但它们的总和不正确。
这是我的情景:
var a:Number = 1.1;
var b:Number = 2.2;
var c:Number = a + b;
c的结果是3.3000000003而不是3.3
如何解决此问题?
显然,样本中'a'和'b'的精度是逗号后的1个数字,但可以是几个。
答案 0 :(得分:1)
这种预期的行为。实际上很难在二进制数系统中表达某些数字。亲密的aprox。结果:
1.00011001100110011001100110011001... (1.09999..)
可悲的是,1.2同样难:
1.00110011001100110011001100110011... (1.19999..)
你可能会注意到1100不断重复。就像在十进制系统中不能表达1/3一样。
解决方案可能是通过舍入c来降低精度。
trace(c.ToString(1));