forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=109)
-   -   Floating point exception (http://forum.boolean.name/showthread.php?t=15631)

xmarat 10.10.2011 23:44

Floating point exception
 
В общем игра вылетает с сообщением "Floating point exception", я так понимаю у меня получается число, в котором после запятой перебор с количеством цифр. Как можно такое решить? Может есть способ округления до 0.* или проблема в другом?

Reks888 11.10.2011 00:10

Ответ: Floating point exception
 
С помощью дебагера найди строку где происходит ошибка, посмотри какие значения имеют переменные в этот момент, вырежи этот кусок кода, сделай автономным и запости сюда
ЗЫ На ноль не делишь, а?

xmarat 11.10.2011 00:32

Ответ: Floating point exception
 
А как поступить если в формуле есть деление и в них иногда случаются ноли?

impersonalis 11.10.2011 00:40

Ответ: Floating point exception
 
Вариантов несколько. Необходима конкретика (что ты моделируешь этой формулой)

xmarat 11.10.2011 01:02

Ответ: 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 )...

HolyDel 11.10.2011 02:31

Ответ: Floating point exception
 
y - 128
тут может быть ноль (при y == 128)

Reks888 11.10.2011 09:15

Ответ: Floating point exception
 
Не хочется, а надо:
If y=128 then ten=0 else ten=0.4 - (1 + ( (y - wy) / ( (y - 128) / 2) ) ) * 0.1

xmarat 11.10.2011 13:34

Ответ: Floating point exception
 
Просто я подумал: может есть универсальная формула, при которой не пришлось бы ставить if?

impersonalis 11.10.2011 13:50

Ответ: Floating point exception
 
Цитата:

В общем по задумке когда wy=-128 то alpha=0, а когда wy=y то alpha = 0.3
а когда y=-128?
Описание похоже не на формулу, а на алгоритм с if, детерминирующем приоритет условий

xmarat 11.10.2011 13:58

Ответ: Floating point exception
 
Цитата:

а когда y=-128?
y - всегда больше ноля...

moka 11.10.2011 18:19

Ответ: Floating point exception
 
Один if - это очень мало, не стоит заморачиваться по такому поводу. На самом деле данное условие оптимизирует.
Потому что если значение будет выходит из пределов 0 или 1.0, то вычислять ничего не нужно, это будут лишние математические вычисления, поэтому можно смело использовать условия.

xmarat 11.10.2011 20:55

Ответ: Floating point exception
 
Хорошо. Так и сделаю. Всем спасибо!


Часовой пояс GMT +4, время: 09:20.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot