![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jul 2007
Сообщений: 44
|
Сразу прошу прозения, юзал поиск, может плохо искал, но ничего вразумтиельного не нашёл.
В своём проекте очень много имею дело с математикой. В большинстве выражений присутствуют int'ы и Number'ы. И мне стало не совсем понятно, в каком порядке и как именно работают преобразования численных типов в AS3. Я сделал пару тестов: Насколько я смог уловить, сначала всё вычисления производятся в Number'ах (то есть с плавающей точкой), а поттом полученное значение приводится к тому, которое требует контекст. Поправьте если не прав. Помогите плиз инфой, ссылками, или чем нибудь. Я хотел иметь абсолютно точную и полную схему этого процесса. Чтобы не осталось вопросов.
__________________
hell no ! |
|
|||||
|
Регистрация: Jul 2008
Адрес: Рига
Сообщений: 176
|
Тут не надо заморачиваться. Просто нужно логически размышлять.
В 1м случае по скольку c целое число - берется его целая часть - это 0. Во 2м все понятно, как и должно быть. В 3м берётся потолок из 0.6 - это 1 (кстати типа Number), который отлично (в данном случае автоматически) преобразуется в int и выводится тебе. Что тут может быть неясно? Я бы на твоем месте больше волновался про приведение к другого рода типам. Например помнить, что: |
|
|||||
|
Регистрация: Jul 2007
Сообщений: 44
|
Неясно например вот что. если у меня длиннющая формула, где есть куча слагаемый и множителей с типами как int так и Number. Всё это в итоге приравнивается скажем к инту. как будут происходить приведения? На каждой стадии вычисления длинного выражения, или всё вычислится так, будто там стоят Number, а только потом отбросится дробная часть?
Хотелось бы знать абсолюнто точную схему, точно такую же, как существует скажем для C++, где есть целый надор документировынных правил. Каждый конкретный пример я могу протестить, или как то интуитивно догадаться. Но всё же хотелось бы иметь точную картину, а не нечто созданное на основе тестов. update: спасибо, уже разобрался. Любое численное выражение вычисляется как Number, независмо от того, какой тип (целый, или двещественный) входящих в выражение элементов имеется. То есть для себя можно считать, что все составные части выражения идут как Number. Конечный результат приводится к тому типу, который требует контекст. Будь то lefthanded переменная, или подстановка в функцию в качестве аргумента.
__________________
hell no ! Последний раз редактировалось romantique; 05.08.2008 в 19:45. |
|
|||||
|
Регистрация: Jul 2008
Адрес: Рига
Сообщений: 176
|
Всё предельно просто.
Где b - это твоя огромная формула. Ты можешь в ней оперировать с чем хочешь, насувать туда что угодно. Просто потом, результат будет переведен в тот тип, которй представляет переменная a. |
|
|||||
|
В большой строке все int будут заменены на Number, когда появляется необходимость. Обратно же только после присвоения переменной с типом int или после функции преобразования int()
__________________
if (love is true) break my.heart; Последний раз редактировалось Rzer; 05.08.2008 в 19:51. |
|
|||||
|
Modus ponens
|
Опреации с целыми числами - они и есть операции с целыми числами, т.е. вас не удивляет, что
Так же точно происходят и операции с целыми числами, а класс Math по определению в методе .ceil() требует тип Number, так что он и не производит никаких операций с целыми числами, он их сразу на входе конвертирует в числа с плавающей точкой.
__________________
Hell is the possibility of sanity |
![]() |
![]() |
Часовой пояс GMT +4, время: 10:23. |
|
|
« Предыдущая тема | Следующая тема » |
|
|