如何使用精确的数字变量?

时间:2014-02-09 03:04:45

标签: actionscript-3 numbers

我有这个变量:

var resources:Number = 10;

所以,我希望每帧减少0.1,直到达到0,我正在用它来做我想要的事情:

if(resources >= 0.1) resources -= 0.1;

并且它没有减少0.1乘0.1 它正在以更高的最接近值递减到0.1,例如0.100000000009999或类似......

所以我的“var resources:Number = 10;”变量正在逐渐减少

if(resources >= 0.1) resources -= 0.1; //9.9
if(resources >= 0.1) resources -= 0.1; //9.8
if(resources >= 0.1) resources -= 0.1; //9.7
if(resources >= 0.1) resources -= 0.1; //9.5999999999999999999
if(resources >= 0.1) resources -= 0.1; //9.4999999999999999999
if(resources >= 0.1) resources -= 0.1; //9.3999999999999999988
if(resources >= 0.1) resources -= 0.1; //9.2999999999999888888

不是那么绝对,但是如此相似...... 当“资源”为0.99999999时,该循环正在停止,但我需要它为0

1 个答案:

答案 0 :(得分:1)

使用此代码段:

function setPrecision(number:Number, precision:int)
{
    precision = Math.pow(10, precision);
    return (Math.round(number * precision) / precision);
}

或AS3拥有精度 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Number.html#toPrecision()