我有两个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/

10-13 08:44