2

私はいくつかのロケール番号を使用しています。例:

  1. 1.234.567,89-ドイツ語
  2. 1'234'567.89-スイス
  3. 1,234,567.89-米国

私のコードは小数点記号の後の最後の桁を切り上げます:

NSNumberFormatter *formatter = [[[NSNumberFormatter alloc] init] autorelease];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setLocale:[NSLocale currentLocale]];
[formatter setMinimumFractionDigits:2];
[formatter setMaximumFractionDigits:2];

double myValue = [[formatter numberFromString:@"123.458"] doubleValue];
double myValue2 = [[formatter numberFromString:@"123.444"] doubleValue];

NSString *rezult = [formatter stringFromNumber:[NSNumber numberWithDouble:myValue]];
NSString *rezult2 = [formatter stringFromNumber:[NSNumber numberWithDouble:myValue2]];

NSLog(@"rezult = %@", rezult);  //gives 123.46 - incorrect
NSLog(@"rezult2 = %@", rezult2);//gives 123.44 - correct

切り上げを防ぐ方法を提案してください。

私はこのようにそれを行うことができないことを覚えておいてください:

double aDouble = 1234.56789;
NSString *stri = [NSString stringWithFormat:@"%.2f", aDouble];
NSLog(@"%@", stri); //result is 1234.56 - correct (not rounded up to 1234.57)

... *formatterを使用して*striを設定する必要があるため(上​​記を参照)。

追加の設定が必要だと思いますよNSNumberFormatterね?

前もって感謝します。

編集1

解決策:NSNumberFormatterを宣言した後、次のようにも言います。

[formatter setRoundingMode: NSNumberFormatterRoundDown];

迅速な解決策を提供してくれた@Priceに感謝します。被験者は閉じました。

4

1 に答える 1

5

これを追加できます:

[formatter setRoundingMode: NSNumberFormatterRoundDown];
于 2012-08-14T14:35:06.793 に答える