Показать сообщение отдельно
Старый 15.06.2007, 02:07   #13
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: Туториал "Змейка"

Что не отменяет моего утверждения, что фраза:
на самом деле функция int() не округляет а отбрасывает все что после запятой
некорректна. int - не отбрасывает, а именно округляет. typecast инт-а в С++ -да, отбрасывает, т.е. на всём диапазоне 0..1 int вернёт 1 только в 1.
В Blitz же - 50/50.
Отбрасыванием в большую и меньшую сторону занимаются Ceil# ( y# ) и Floor# ( y# ) (не Float - это отдельный разговор) соответственно.
Тупое же отбрасывание не получится даже при принудительном преобразовнии типа:
x#=0.93
z%=x
Print z
x#=0.33
z%=x
Print z
WaitKey()
число 0.93 будет окурглено до 1, а 0.33 - до 0. Всё как положено.
Отбросить ненужные знаки можно следующим образом:
x#=0.93
z#=x- x Mod 1
Print z
x#=0.33
z#=x- x Mod 1
Print z
WaitKey()
Как видим - в обоих случаях, нули. Тут дело в том, что наряду с "непривычным" INT-ом, в B3D "непривычный" MOD - в качестве аргументов могут выступать дробные числа (сравни с С++ : error C2296: '%' : illegal, left operand has type 'const double'). Этим св-вом мы пользуемся - остаток отделения на 1 = дробной части.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием