я пишу на с++ - через час я удавлюсь
2284
3
я скоро удавлюсь.... с++:
есть переменная long gameTime; все шито-крыто, даже начальное значение присвоено.
проверка
if (gameTime % 1440 == 0) {...}
кидает Division by zero, если gameTime на 1440 нацело не делится!!!
ладно, попробуем по-другому:
if (floor(gameTime/1440) == gameTime/1440) {...}
(floor дает целую часть числа (снизу)) конечно не очень красиво, но зато выполняется всегда! даже если gameTime не делится на 1440. вставляю в тело условия код:
printf("%lf, %lf\n", floor(gameTime/1440), gameTime/1440);
видим, что floor(gameTime/1440) действительно дает целую часть от gameTime/1440 (в типе float), видим также, что просто gameTime/1440 дает всегда 0! ладно, меняем вывод - вместо второго %lf ставим %i , видим, что да, gameTime/1440 дает в типе int (или long) целую часть от gameTime/1440. Понимаем неочевидную ошибку, меняем условие:
if(floor(gameTime/1440) == (float)gameTime/1440) {...} -
снова получаем деление на ноль, когда gameTime на 1440 нацело не делится! пробуем по-другому:
if( (long)floor(gameTime/1440) == (long)gameTime/1440) {...} -
получаем, что условие выполняется всегда!!!
АААААААААААААААА

ЧТО ДЕЛАТЬ!!!

ЗюЫю это не камень в сторону с++
я не верю, что тот код, который ты привел, может такое делать.

но вообще говоря, ==0 делать необязательно, можно сделать так:

if( !(gameTime%1440) ) {...}

т.к. 0 переводится в false, а не 0 - в true.

а вообще, приведи код в исходном виде, потому что приведенный тобою выше код работает нормально, не так как ты описал.
извиняюсь, все нормально, проблема не в том, позор мне, удаляюсь восвояси, короче тему можно удалять.
вообще, бред какой-то...

1. if (gameTime % 1440 == 0) {...}
в данном виде, делитель всегда 1440, operator% выполняется раньше operator== - всё всегда должно работать.

2. if (floor(gameTime/1440) == gameTime/1440) {...}
gameTime/1440 по определению целая часть от gameTime/1440 в математическом смысле (целочисленное деление) и 0 будет только в случае gameTime