[英]Objective-C: Calculating hourly rate with NSDate and NSDecimalNumber
我有两个 NSDate 实例(一个开始时间和一个结束时间),还有一个 NSDecimalNumber (代表在两个日期之间的时间段内赚取的金额)。 我要做的是根据这三个变量计算每小时费率。 我想出了一些可行的方法,但对我来说有点过分了,我想知道是否有更简单、更有效的方法。 这就是我现在正在做的事情。
计算两个 NSDate 之间的时间量
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 实例,因此有必要通过所有这些步骤 go。 我担心我可能会失去准确性或执行不必要的步骤。 感谢您的任何建议。
你为什么不只是使用一个简单的数学?
NSTimeInterval timeInSeconds = [endTime timeIntervalSinceDate:startTime];
double hours = timeInSeconds / 3600;
double rate = [result doubleValue];
double hourlyRate = rate / hours;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.