-1
我不明白,为什么在下面的代码中的值不等于1:整数等于0而不是1
var a:uint = (4.1-1.7)/2.4;
trace(a);//traces 0
var b:int = (4.1-1.7)/2.4;
trace(b);//traces 0
var c:Number = (4.1-1.7)/2.4;
trace(c);//traces 0.9999999999999998
我不明白,为什么在下面的代码中的值不等于1:整数等于0而不是1
var a:uint = (4.1-1.7)/2.4;
trace(a);//traces 0
var b:int = (4.1-1.7)/2.4;
trace(b);//traces 0
var c:Number = (4.1-1.7)/2.4;
trace(c);//traces 0.9999999999999998
这是因为在大多数语言存储的真实,非整数使用浮动(http://en.wikipedia.org/wiki/Floating_point),它本质上容易出现较小的不准确性。
[每个程序员都应该知道的浮点数](http://floating-point-gui.de/) – Barmar
对不起。在发布问题之前,我确实尝试过搜索。 –
添加到芯片的答案,由于易受轻微的不准确性,你的每个变量都等于'0.9999999999999998',但因为前两个被键入为'uint'和'int',所以这些数字被截断(不是舍入)到'0'。 – TheDarkIn1978