Задачи Objective C, выполняющие математику над целым числом - PullRequest
0 голосов
/ 28 октября 2010

У меня есть следующая строка кода, которая работает на таймере:

NSLog( @" seconds: %i, elapsedhours %f", [self elapsedSeconds], [self elapsedSeconds] / 3600);

Распечатывается:

seconds: 0, elapsedhours 0.000000
seconds: 1, elapsedhours 0.000000
seconds: 2, elapsedhours 0.000000
seconds: 3, elapsedhours 0.000000

Мне интересно, почему прошедшие часы не обновляются?

Метод истекших секунд:

- (NSUInteger)elapsedSeconds;
{
    NSUInteger seconds = 0;
    if( ![self endDate] ) {
        seconds = [[NSDate date] timeIntervalSinceDate: [self startDate]];
        NSLog( @" startdate = %@ no end date %i", startDate, seconds );
    }
    else {
        seconds = [[self endDate] timeIntervalSinceDate: [self startDate]];
    }

    return seconds;
}

Что-нибудь еще, что вы, ребята, должны видеть?

TIA

Ответы [ 2 ]

4 голосов
/ 28 октября 2010

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

Вы должны разделить его на 3600.0, если хотитепосмотреть частичные результаты ..

0 голосов
/ 28 октября 2010

Целое число, деленное на целое число, является целым числом.

Итак, 1/3600 равно 0.

Целое число, деленное на что-то другое, является чем-то другим

Так1/3600.0 это 0.00027777777

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...