目标C:使用NSDate和NSDecimalNumber计算小时费率



我有两个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实例,所以有必要完成所有这些步骤。我担心我可能会失去准确性或执行不必要的步骤。谢谢你的建议。

为什么不使用简单的数学?

NSTimeInterval timeInSeconds = [endTime timeIntervalSinceDate:startTime];
double hours = timeInSeconds / 3600;
double rate = [result doubleValue];
double hourlyRate = rate / hours;

最新更新