Actionscript 3 给出与int不同的答案

Actionscript 3 给出与int不同的答案,actionscript-3,actionscript,Actionscript 3,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) as运算符是直接转换,而int()隐式查找数字的下限(注意,它实际上并不调用Math.floor)。say it检查“第一个操作数是第二个操作数指定的数据类型的成员。”由于9.59不能表示为int,因此as

新手动作脚本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)

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


您可以将
Math.floor(blah)设置为int
,它应该可以工作,但速度会慢一些。假设您想要一个四舍五入的整数,
Math.round(blah)as int
会更正确,但是
int(blah+.5)
会最快且正确地进行四舍五入。

as
操作符是直接转换的,而
int()
隐式地查找数字的底部(注意,它实际上并没有调用
Math.floor
)。say检查“第一个操作数是第二个操作数指定的数据类型的成员。”由于9.59不能表示为int,因此
as
强制转换失败,返回null,而
int()
首先查找数字的下限,然后将其强制转换为int


您可以将
Math.floor(blah)作为int进行计算,虽然速度较慢,但它应该可以工作。假设您想要一个整数,
Math.round(blah)作为int
会更正确,但是
int(blah+.5)
将是最快和正确的整数。

as操作符不像演员,更像:

i是int?int:null


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

as运算符不太像强制转换,更像:

i是int?int:null


这让人非常困惑。它会检查变量是否属于那种类型,如果是,则返回变量,否则会得到null(0表示int)。

好吧……你得到了什么两个结果?9.59…没有任何转换为int,9表示第二个,0表示第一个。我做了更多的测试,显然(9表示int),(9.5表示Number)和(int(9.5))给出正确的结果,但是(9.5作为int)结果为空。为什么会是这种情况?嗯!这个用户有一个类似的问题:我觉得这两种施法方法几乎是等效的。这在ActionScript文档的任何地方都提到过吗?!这个问题确实需要更多的投票。那么…你得到了什么样的两个结果?9.59…没有任何对int的施法,9第二个是0,第一个是0。我做了更多的测试,显然(9作为int),(9.5作为Number)和(int(9.5))给出了正确的结果,但是(9.5作为int)结果为空。为什么会是这种情况?嗯!这个用户有一个类似的问题:我觉得这两种铸造方法几乎是等效的。这在ActionScript文档中有提到过吗?!这个问题确实需要更多的投票。