2

次のコードで "numberFromString = 9.39" ではなく "numberFromString = 9.390000000000001" が生成されるのはなぜですか?

NSNumberFormatter *numFormatter = [[NSNumberFormatter alloc] init];
[numFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numFormatter setPositiveFormat:@"$##0.00"];
[numFormatter setNegativeFormat:@"-$##0.00"];
NSNumber *nTCA = [numFormatter numberFromString:@"$9.39"];

NSLog(@"numberFromString = %@", nTCA);

OS X 10.6 および iOS 4.3.3 で上記の結果が得られます。

このエラーを修正する最善の方法は何ですか?

ありがとう

4

1 に答える 1

4

浮動小数点精度を使用した結果、エラーが発生したと思われます。これを修正する方法は、NSDecimalNumber代わりに を使用することですNSNumber。これについての素晴らしい投稿があります here .

NSDecimalNumber方法があり+ decimalNumberWithString:ます。それはあなたの目的に十分ですか?

于 2011-06-20T21:24:08.887 に答える