int (бла) дает другой ответ от (бла) как int - PullRequest
1 голос
/ 04 июня 2009

Вопрос новичку в 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 ]

8 голосов
/ 04 июня 2009

Оператор 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) будет самым быстрым и округленным правильно.

2 голосов
/ 04 июня 2009

Оператор as не так много, как приведение, скорее что-то вроде:

я int? int: null;

Это чертовски странно. Он проверяет, принадлежит ли переменная этого типа, если она есть, переменная возвращается, иначе вы получите null (0 для целого числа).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...