NSDate の 2 つのインスタンス (開始時刻と終了時刻) と、1 つの NSDecimalNumber (2 つの日付の間の期間に獲得した金額を表す) があります。私がやろうとしているのは、これら 3 つの変数に基づいて時給を計算することです。機能するものを思いついたのですが、少しやり過ぎに感じたので、もっと簡単で効率的な方法がないか知りたいと思いました。これが私が今していることです。
2 つの NSDates 間の時間を計算する
NSTimeInterval timeInSeconds = [endTime timeIntervalSinceDate:startTime];
これを時間に換算すると
double hours = timeInSeconds / 3600;
時間の double を 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 の別のインスタンスを作成することなので、これらすべての手順を実行する必要があります。正確性を失ったり、不要な手順を実行したりするのではないかと心配しています。アドバイスをありがとう。