我有两个NSDate实例(开始时间和结束时间),还有一个NSDecimalNumber(代表两个日期之间的时间段内获得的金额)。我要做的是根据这三个变量计算每小时费用。我想出了一些可行的方法,但是对我来说有点过分了,我想知道是否有一种更简单,更有效的方法。这就是我现在正在做的。
计算两个NSD之间的时间
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;
关于iphone - Objective-C:使用NSDate和NSDecimalNumber计算小时费率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6314265/