int(blah)将(blah)的不同答案作为int

时间:2009-06-04 08:04:22

标签: actionscript-3 actionscript

Newbie ActionScript 3问题:为什么

(Math.sqrt((r * r - (r - i) * (r - i)) as Number) * 2) as int

给我一​​个不同的结果

int(Math.sqrt((r * r - (r - i) * (r - i)) as Number) * 2)

2 个答案:

答案 0 :(得分:8)

as运算符是直接转换,而int()隐式查找数字的底限(请注意,它实际上并不会调用Math.floor)。 Adobe docs for as表示它检查“第一个操作数是第二个操作数指定的数据类型的成员”。由于9.59不能表示为int,as强制转换失败返回null,而int()首先找到数字的最低点,然后将其强制转换为int。

你可以做Math.floor(blah) as int,它应该可以工作,但速度会慢一些。假设你想要一个舍入的int,Math.round(blah) as int会更正确,但int(blah + .5)将是最快和正确的圆。

答案 1 :(得分:2)

as运算符不像演员,更像是:

我是int? int:null;

这让人很困惑。它检查变量是否属于该类型,如果是,则返回变量,否则你将得到null(0表示int)。