Arc*_*gon 1 actionscript actionscript-3
新手ActionScript 3问题:为什么呢
(Math.sqrt((r * r - (r - i) * (r - i)) as Number) * 2) as int
Run Code Online (Sandbox Code Playgroud)
给我一个不同的结果
int(Math.sqrt((r * r - (r - i) * (r - i)) as Number) * 2)
Run Code Online (Sandbox Code Playgroud)
该as运营商是直接投,而int()隐含发现号(请注意,它实际上并没有调用的地板Math.floor,虽然).所述的Adobe文档用于as说检查该"第一个操作数是由所述第二操作数指定的数据类型的成员".由于9.59不能表示为int,因此强制转换as无法返回null,而int()首先查找数字的下限,然后将其强制转换为int.
你可以做Math.floor(blah) as int,它应该工作,虽然它会更慢.假设你想要一个舍入的int,Math.round(blah) as int会更正确,但int(blah + .5)会更快和圆正确.