5

次のコードがあります

(...)
numberStyle = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundPlain
                                                                     scale:2
                                                          raiseOnExactness:NO
                                                           raiseOnOverflow:NO
                                                          raiseOnUnderflow:NO
                                                       raiseOnDivideByZero:NO];

strThree = textFieldThree.text;
strThree = [strThree stringByReplacingOccurrencesOfString:@"." withString:@""];

fieldOneDNa = (NSDecimalNumber *)[NSDecimalNumber decimalNumberWithString:strThree];
oneHundred = (NSDecimalNumber *)[NSDecimalNumber decimalNumberWithString:@"100"];
fieldOneDN = [fieldOneDNa decimalNumberByDividingBy:oneHundred
                                       withBehavior:numberStyle];

firstStepReturn = [fieldOneDN stringValue];
textFieldThree.text = firstStepReturn;
(...)

.00 または .*0 であっても、firstStepReturn の小数点以下 2 桁を使用できるようにしたいと考えています。たとえば、テキストフィールド「textFieldThree」に 323.390 が入力された場合、それは処理されて 3233.90 としてテキストフィールドに返されます。現時点では、3233.9 と表示されています。

どんな助けでも大歓迎です。

4

2 に答える 2

18

NSDecimalNumberはNSNumberをサブクラス化するため、NSNumberFormatterを使用する必要があります。


 NSDecimalNumber * dn = [NSDecimalNumber decimalNumberWithString:@"1234.5"];
 NSNumberFormatter * nf = [[NSNumberFormatter alloc] init];
 [nf setMinimumFractionDigits:2];
 [nf setMaximumFractionDigits:2];
 NSString *ns  = [nf stringFromNumber:dn];

シンプル

于 2009-12-24T19:37:03.030 に答える
4

使わない理由textFieldThree.text=[NSString stringWithFormat:@"%.2f",[fieldOneDN floatvalue]];

(または同様のもの-申し訳ありませんが、私は現在PCを使用しているため、これをテストできません)

于 2009-12-22T17:06:37.693 に答える