Я пытаюсь отобразить несколько десятичных знаков в научном стиле.Я использую NSDecimalNumber и NSNumberFormatter объекты.При настройке минимального и максимального количества цифр некоторая информация из исходного номера, похоже, теряется.Например, рассмотрим следующий пример кода:
NSDecimalNumber *dn = [NSDecimalNumber decimalNumberWithDecimal:[[NSNumber numberWithInt:3123400] decimalValue]];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterScientificStyle];
[formatter setMinimumFractionDigits:2];
[formatter setMaximumFractionDigits:2];
NSString *result = [formatter stringFromNumber:dn];
// Expected: result is 3.12E6
// Actual: result is 3.10E6
[formatter release];
В этом случае я бы ожидал, что результат переменной NSString будет равен 3.12E6.Вызовы setMinimumFractionDigits и setMaximumFractionDigits заблокировали окончательный результат в 2 десятичных разрядах.К сожалению, вторая цифра фактически равна 0 вместо ожидаемого значения 2.
Увеличение вызовов setMinimumFractionDigits и setMaxiumFractionDigits до 3 дает результат 3.120E6.Последняя цифра, в данном случае третья цифра дроби, снова остается 0 вместо ожидаемого значения 3.
Почему последняя цифра 0 в этих случаях?Есть какая-то настройка или конфигурация NSNumberFormatter, которую я пропускаю?Я использую Xcode версии 3.2.2.