![]()
Van Damm
wait... what?
![]() ![]() offline
Опыт:
22,268Активность: |
[Info] Почему стоит писать 2.0 вместо 2
Доказывая людям из соседней темы то, что вар не делает никакой прекалькуляции, я привел в пример дизассембленный код функции. Адольф заметил там интересную вещь, которую я тут же проверил и спешу теперь поделиться с общественностью.
Разбору подлежала следующая простенькая функция:
что после дизассемблера вылилось в такой псевдокод:
Адольф Обратил моё внимание на странные действия
из чего следовало что "2" воспринимается варом как целое число, а только потом преобразовывает в число с плавающей запятой.
Чтобы проверить догадку, было внесено маленькое изменение в исходный код:
и вуаля, всё как и ожидалось:
а конкретнее вот:
двойка сразу передалось как число с плавающей запятой
Отсюда вывод:Значения с плавающей точкой стоит записывать с точкой даже если дробная часть нулевая (1.0 или 1. против 1)! Тем самым мы экономим виртуальной машине игры одну операцию приведения типов =) |
![]() |
#1
+12/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
adic3x
![]() offline
Опыт:
108,439Активность: |
+rep
кстате я всегда ставил 2. из соображений порядка - оказалась правильно) |
![]() |
#2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
agentex
![]() offline
Опыт:
34,834Активность: |
эээ не понял вы удивлены что вар читает целое число как целое? о_О ага я тож |
![]() |
#3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Nekit1234007
![]() ![]() offline
Опыт:
11,916Активность: |
agentex, считать надо в real'е, а "2" число целое, и вар преобразует его сначало в реал и потом считает. =) |
![]() |
#4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Toadcop
![]() ![]() offline
Опыт:
54,313Активность: |
ну в целом это логично как бы =) просто теперь вопрос скока требует перевод инта в флоат. (тактов процессора или чего либо =) ) |
![]() |
#5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
adic3x
![]() offline
Опыт:
108,439Активность: |
это я думаю к кроку вопрос. хотя можно и самим попробывать найти обработчик опкода)
но мне кажется что это (и обратное преобразование) должно быть быстрее, чем вызов нативки |
![]() |
#6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
NETRAT
![]() ![]() offline
Опыт:
83,712Активность: |
r*bj_PI*2 что-то меняет? |
![]() |
#7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
ScorpioT1000
Работаем
![]() ![]() offline
Опыт: отключен
|
Работа с интом гораздо быстей чем с флоатом, хотя здесь это не имеет значения..
че у вас за дизассемблер такой? это на асм то не похоже |
![]() |
#8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Van Damm
wait... what?
![]() ![]() offline
Опыт:
22,268Активность: |
нет. Всё так же берётся инт и преобразуется в флоат |
![]() |
#9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
agentex
![]() offline
Опыт:
34,834Активность: |
а в чем проблема? все логично же вы хотите сказать что если написать set i = 2 + 2 вар все равно переведет все слагаемые в риал а потом будет считать? |
![]() |
#10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Nekit1234007
![]() ![]() offline
Опыт:
11,916Активность: |
agentex, я имел ввиду если берётся реал и инт, то инт переводится в реал и считает... |
![]() |
#11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
agentex
![]() offline
Опыт:
34,834Активность: |
а что есть другие варианты?? это же очевидно.. |
![]() |
#12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
adic3x
![]() offline
Опыт:
108,439Активность: |
это ниразу не очевидно, можно анализировать тип выражения и сразу считать цифры в формате без точки как реалы (как в принципе делают многие компиляторы) |
![]() |
#13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
FREEZE_ball
Cataclysm => жара
![]() ![]() offline
Опыт:
15,247Активность: |
Код:
|
![]() |
#14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
iZucken
ШТО
![]() offline
Опыт:
17,960Активность: |
FREEZE_ball, хD ScorpioT1000: а на сколько? хотя, лучше так: во сколько? |
![]() |
#15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Hellfim
Новичок
![]() ![]() offline
Опыт:
79,707Активность: |
|
![]() |
#16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Enein
Silenced by ZlaYa1000
![]() ![]() offline
Опыт:
43,453Активность: |
|
![]() |
#17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Van Damm
wait... what?
![]() ![]() offline
Опыт:
22,268Активность: |
любой из трёх вариантов Van Damm добавил: хотя насчёт первого я не уверен =) |
![]() |
#18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Elf_Stratigo
![]() offline
Опыт:
4,699Активность: |
это вроде ещё из си -неформальное преобразование...
|
![]() |
#19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Hellfim
Новичок
![]() ![]() offline
Опыт:
79,707Активность: |
Elf_Stratigo, неявное приведение =) |
![]() |
#20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|