Оператор as
является прямым приведением, тогда как int()
неявно находит пол числа (хотя, на самом деле, он не вызывает Math.floor
). Документы Adobe для as
говорят, что он проверяет, что «первый операнд является членом типа данных, указанного вторым операндом». Поскольку 9.59 не может быть представлен как int, приведение as
завершается неудачно и возвращает ноль, в то время как int()
сначала находит пол числа, а затем приводит его к int.
Вы могли бы сделать Math.floor(blah) as int
, и это должно работать, хотя это будет медленнее. Предполагая, что вы хотите округлить int, Math.round(blah) as int
будет более правильным, но int(blah + .5)
будет самым быстрым и округленным правильно.