如何判断一个AS3中的数值是不是奇数的例子(灵感来自于Java解惑)
废话不说,直接上代码:
package
{
import flash.display.Sprite;
import flash.utils.getTimer;
/**
* ...
* flash中对于负数的处理,不是每一次的判断偶数都正确
* 在AS中0为false,非0为true(Java、C中也是这样)
* @author aisajiajiao
*/
public class Test extends Sprite
{
public function Test()
{
var oldTime:int = getTimer();
for(var i:int = -10000; i < 40000; i++)
{
trace(i + "是奇数:",Test.isOdd(i));
}
var now:int = getTimer();
trace("----------------->",now - oldTime);
}
/**
* 判断一个数字是不是奇数
*/
public static function isOdd(i:int):Boolean
{
// return i % 2 == 1; //这种办法会产生Bug,如果输入为数值为负数,则其一定会返回为false
// return i % 2 != 0; //这种办法可以正确运行
return (i & 1) != 0; //这种办法效率最高
}
}
}
最后两种效率的区别,我的测试如下: