iPhone: целочисленное переполнение в выражении - PullRequest
0 голосов
/ 16 августа 2011

Я получаю целочисленное переполнение в выражении для NSTimerInterval, которое действительно является двойным.

NSTimerInterval paymentTermsInMilliSeconds = 30 * 24 * 60 * 60 * 1000; 

Как лучше всего обрабатывать интервал таймера в iPhone?

Ответы [ 3 ]

2 голосов
/ 16 августа 2011

Скорее всего, это вызвано тем, что вычисление выполняется для целых чисел, что дает целочисленный результат. Попробуйте вместо этого использовать двойные значения.

РЕДАКТИРОВАТЬ: Я только что проверил, и это именно то, что происходит. Если вы измените свой расчет на: NSTimeInterval paymentTermsInMilliSeconds = 30.0 * 24.0 * 60.0 * 60.0 * 1000.0;, тогда код даст правильное значение "2592000000". В противном случае вы получите переполнение и результат «-1702967296».

1 голос
/ 16 августа 2011

Вы, вероятно, имеете в виду NSTimeInterval.Обычно это временной интервал в секундах.Для использования с миллисекундами используйте 0,001 секунды для миллисекунд.

0 голосов
/ 16 августа 2011

Использование,

NSTimerInterval paymentTermsInMilliSeconds = 30 * 24 * 60 * 60 * 1000.0; 

Надеюсь, решит проблему.

...