|
10.10.2011, 23:44
|
#1
|
Нуждающийся
Регистрация: 11.07.2011
Сообщений: 64
Написано 2 полезных сообщений (для 2 пользователей)
|
Floating point exception
В общем игра вылетает с сообщением "Floating point exception", я так понимаю у меня получается число, в котором после запятой перебор с количеством цифр. Как можно такое решить? Может есть способ округления до 0.* или проблема в другом?
__________________
OS: Ubuntu Linux 11.04
CPU: Intel® Core™ 2 Quad Q9000 (2.0GHz, 1066MHz, 6Mb)
RAM: DDR2 SODIMM 4096 Мб
Video: NVIDIA® GeForce® GT240M 1024 Мб
|
(Offline)
|
|
11.10.2011, 00:10
|
#2
|
Дэвелопер
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений (для 1,985 пользователей)
|
Ответ: Floating point exception
С помощью дебагера найди строку где происходит ошибка, посмотри какие значения имеют переменные в этот момент, вырежи этот кусок кода, сделай автономным и запости сюда
ЗЫ На ноль не делишь, а?
|
(Offline)
|
|
11.10.2011, 00:32
|
#3
|
Нуждающийся
Регистрация: 11.07.2011
Сообщений: 64
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Floating point exception
А как поступить если в формуле есть деление и в них иногда случаются ноли?
__________________
OS: Ubuntu Linux 11.04
CPU: Intel® Core™ 2 Quad Q9000 (2.0GHz, 1066MHz, 6Mb)
RAM: DDR2 SODIMM 4096 Мб
Video: NVIDIA® GeForce® GT240M 1024 Мб
|
(Offline)
|
|
11.10.2011, 00:40
|
#4
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Floating point exception
Вариантов несколько. Необходима конкретика (что ты моделируешь этой формулой)
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
11.10.2011, 01:02
|
#5
|
Нуждающийся
Регистрация: 11.07.2011
Сообщений: 64
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Floating point exception
0.4 - (1 + ( (y - wy) / ( (y - 128) / 2) ) ) * 0.1
Суть заключается в том что объект движется сверху-вниз, и между объектом и конечной точкой находится тень, формула выше задает прозрачность тени, т.е. в начале пути прозрачность равна 0 и увеличивается пропорционально расстоянию между объектом и конечной точкой до отметки приблизительно равной 0.3 ... В общем по задумке когда wy=-128 то alpha=0, а когда wy=y то alpha = 0.3 ... Формула работает, но иногда игра вылетает...
P.s. y - высота конечной точки, wy - высота объекта, деление на ноль случается когда y=128, не хочется решать вопрос так: If not( y = 128 )...
__________________
OS: Ubuntu Linux 11.04
CPU: Intel® Core™ 2 Quad Q9000 (2.0GHz, 1066MHz, 6Mb)
RAM: DDR2 SODIMM 4096 Мб
Video: NVIDIA® GeForce® GT240M 1024 Мб
|
(Offline)
|
|
11.10.2011, 02:31
|
#6
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Floating point exception
y - 128
тут может быть ноль (при y == 12
|
(Offline)
|
|
11.10.2011, 09:15
|
#7
|
Дэвелопер
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений (для 1,985 пользователей)
|
Ответ: Floating point exception
Не хочется, а надо:
If y=128 then ten=0 else ten=0.4 - (1 + ( (y - wy) / ( (y - 128) / 2) ) ) * 0.1
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
11.10.2011, 13:34
|
#8
|
Нуждающийся
Регистрация: 11.07.2011
Сообщений: 64
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Floating point exception
Просто я подумал: может есть универсальная формула, при которой не пришлось бы ставить if?
__________________
OS: Ubuntu Linux 11.04
CPU: Intel® Core™ 2 Quad Q9000 (2.0GHz, 1066MHz, 6Mb)
RAM: DDR2 SODIMM 4096 Мб
Video: NVIDIA® GeForce® GT240M 1024 Мб
|
(Offline)
|
|
11.10.2011, 13:50
|
#9
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Floating point exception
В общем по задумке когда wy=-128 то alpha=0, а когда wy=y то alpha = 0.3
|
а когда y=-128?
Описание похоже не на формулу, а на алгоритм с if, детерминирующем приоритет условий
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
11.10.2011, 13:58
|
#10
|
Нуждающийся
Регистрация: 11.07.2011
Сообщений: 64
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Floating point exception
y - всегда больше ноля...
__________________
OS: Ubuntu Linux 11.04
CPU: Intel® Core™ 2 Quad Q9000 (2.0GHz, 1066MHz, 6Mb)
RAM: DDR2 SODIMM 4096 Мб
Video: NVIDIA® GeForce® GT240M 1024 Мб
|
(Offline)
|
|
11.10.2011, 18:19
|
#11
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Floating point exception
Один if - это очень мало, не стоит заморачиваться по такому поводу. На самом деле данное условие оптимизирует.
Потому что если значение будет выходит из пределов 0 или 1.0, то вычислять ничего не нужно, это будут лишние математические вычисления, поэтому можно смело использовать условия.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо moka за это полезное сообщение:
|
|
11.10.2011, 20:55
|
#12
|
Нуждающийся
Регистрация: 11.07.2011
Сообщений: 64
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Floating point exception
Хорошо. Так и сделаю. Всем спасибо!
__________________
OS: Ubuntu Linux 11.04
CPU: Intel® Core™ 2 Quad Q9000 (2.0GHz, 1066MHz, 6Mb)
RAM: DDR2 SODIMM 4096 Мб
Video: NVIDIA® GeForce® GT240M 1024 Мб
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 16:59.
|