У меня есть два экземпляра 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, поэтому необходимо пройти через все этишаги.Я беспокоюсь, что могу потерять точность или выполнить ненужные шаги.Спасибо за любой совет.