0

コードを少し最適化しようとしていますが、入力価格をCore Dataエンティティに保存するこの部分を見ていましたが、間違っている/非効率的だと感じています。

NSNumberFormatter *priceFormatter = [[NSNumberFormatter alloc] init];
[priceFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
myEntity.price = (NSDecimalNumber *)[priceFormatter numberFromString:self.priceField.text];

ここで私が実際に行っていると思うのNSNumberFormatterは、10 進スタイルを持つ を作成することです (明らかに価格に必要です。テキスト フィールドには 2.00 ではなく 2 が入力される可能性があるため、ある程度必要です)。それを使用しNSNumberFormatterて値を入力します。テキストフィールドからNSDecimalNumberキャスト経由で。フォーム 2.00 に 2 を取得したい理由は、エンティティを読み込んでアプリに表示するときに、それを実行しないようにするためです。また、テキスト フィールドはテキスト フィールドを規制して、小数点以下 2 桁を超えないようにするなど、そのビットについて心配する必要はありません。

このコードは効率的ですか? これを行うより良い方法はありますか?これも必要ですか?

4

1 に答える 1

0

これが米ドルのみのアプリであると仮定すると、通貨として「セント」を使用できます。これにより、浮動小数点数で発生する多くの問題が解消されます。次に、値を表示するすべてのソフトウェアで使用される単純な変換関数または方法があります。値を100で割ってドルを取得し、セントを取得するには、合計からドル* 100を減算し、残りはセントです。簡単に表示:

NSInteger total = ...;
NSInteger dollars = total/100;
NSUInteger cents = abs(total) - abs(dollars*100);
NSString stringWithFormat:@"%%d.%0u", dollars, cents);
于 2013-04-12T15:04:02.977 に答える