У меня есть два экземпляра NSDate (время начала и время окончания), а также один NSDecimalNumber (который представляет сумму, которая была заработана за период времени между двумя датами). Я пытаюсь рассчитать почасовую ставку на основе этих трех переменных. Я придумал что-то, что работает, но это кажется мне немного чрезмерным, и я хотел знать, есть ли более простой и эффективный способ. Вот чем я сейчас занимаюсь.
Расчет количества времени между двумя NSDates
NSTimeInterval timeInSeconds = [endTime timeIntervalSinceDate:startTime];
Преобразуя это в часы
double hours = timeInSeconds / 3600;
Преобразование удвоения часов в NSNumber
NSNumber *duration = [NSNumber numberWithDouble:hours];
Преобразование NSNumber в NSString
NSLocale *locale = [NSLocale currentLocale];
NSString *durationString = [duration descriptionWithLocale:locale];
Использование этой строки для создания NSDecimalNumber
NSDecimalNumber *decimalDuration = [NSDecimalNumber decimalNumberWithString:durationString locale:locale];
Разделение исходного NSDecimalNumber (результата) на это новое представление времени NSDecimalNumber
NSDecimalNumber *hourlyRate = [result decimalNumberByDividingBy:decimalDuration];
Если я правильно понимаю, единственный способ выполнить любую математику с использованием моего исходного NSDecimalNumber - это создать еще один экземпляр NSDecimalNumber, поэтому необходимо выполнить все эти шаги. Меня беспокоит, что я теряю точность или выполняю ненужные действия. Спасибо за любой совет.