NSNumberFormatter не работает правильно - PullRequest
1 голос
/ 10 декабря 2011

Мой код:

NSString *price = @"0.29000";
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
[f setUsesSignificantDigits:YES];
[f setMaximumFractionDigits:2];
[f setMinimumFractionDigits:2];

NSNumber * priceNumber = [f numberFromString:price];

[f release];

NSLog(@"priceNumber:%@", priceNumber);

Результат:

priceNumber:0.2899999999999999

Что здесь происходит? Почему не 0,29?

1 Ответ

2 голосов
/ 10 декабря 2011

Вы можете использовать класс NSDecimalNumber, чтобы избежать таких различий в точности.С его помощью вы создаете свой NSDecimalNumber объект непосредственно из NSString, без необходимости NSNumberFormatter:

NSString *price = @"0.29000";
NSDecimalNumber *priceNumber = [NSDecimalNumber decimalNumberWithString:price];
NSLog(@"priceNumber:%@", priceNumber);

Однако, если вы хотите сделать пользовательское форматирование для этого NSDecimalNumber,Вы также можете использовать NSNumberFormatter.

...