2013-12-20 1 views
0

Привет Я делаю математические операции с NSTimeInterval (который является двойной тип) с одной длинной переменнойNSTimeInterval 1 вторая разница с длинным значением

NSTimeInterval timeDifference =[endDateTime timeIntervalSinceDate:startDateTime]; 

    long duration= timeDifference-[dauseDuration longValue]; 
    NSString *eventDuration=[NSString stringWithFormat:@"%ld",duration]; 
    NSLog(@"Duration :  %@",eventDuration); 

где я получаю 1 секунда разницы в результате, может благодаря любой знает, в заранее !!!

+3

Вероятно, проблема округления; стандартное преобразование с двойным преобразованием использует значение пола. Попробуйте округлить перед конверсией. – Dave

ответ

0

NSTimeInterval может содержать только значения NSUInteger. Когда вы вычитаете «длинный» из значения «целое», результат всегда будет «целым числом». Длинные потеряют свою точность. Попытайтесь использовать,

длительный срок = (долго) различие- [dauseDuration longValue];

(Но не уверен, если вы можете составить разницу в 1 секунду).

+0

спасибо @karthik за ответ Я знаю решение, просто я хотел знать причину этого, мое предположение связано с округлением, которое происходит, просто нужно проверить. –