NSNumberFormatter不尊重科学风格的数字信息

时间:2010-06-17 04:14:31

标签: iphone cocoa-touch xcode nsnumberformatter

我试图以科学风格显示一些小数。我正在使用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。

0 个答案:

没有答案