Iphone NSNumberFormatter不以科学方式尊重数字信息

Iphone NSNumberFormatter不以科学方式尊重数字信息,iphone,cocoa-touch,xcode,nsnumberformatter,Iphone,Cocoa Touch,Xcode,Nsnumberformatter,我试图以科学的方式显示一些小数。我正在使用NSDecimalNumber和NSNumberFormatter对象。但是,当设置最小和最大位数时,原始数字中的一些信息似乎丢失了。例如,考虑下面的代码示例: NSDecimalNumber *dn = [NSDecimalNumber decimalNumberWithDecimal:[[NSNumber numberWithInt:3123400] decimalValue]]; NSNumberFormatter *formatter = [[N

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

我不确定,但听起来它好像在为您处理有效数字。谢谢,我来看看有效数字设置。还有,有一次我查看了这个页面,有人留下了答案。我不知道它为什么消失了。