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 调用将最终结果锁定在小数点后两位。不幸的是,第二个数字实际上是 0,而不是预期值 2。
将 setMinimumFractionDigits 和 setMaxiumFractionDigits 调用增加到 3,会产生结果 3.120E6。最后一位数字(在本例中为第三个小数位)再次保持为 0,而不是预期值 3。
为什么在这些情况下最后一位数字为 0?我是否缺少 NSNumberFormatter 的某些设置或配置?我使用的是 Xcode 版本 3.2.2。
I am trying to display some decimals in a scientific style. I'm using NSDecimalNumber and NSNumberFormatter objects. When setting the minimum and maximum number of digits though, some information from the original number seems to be lost. For example, consider the following code example:
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];
In this case, I would have expected the NSString variable result to equal 3.12E6. The setMinimumFractionDigits and setMaximumFractionDigits calls having locked the final result at 2 decimal places. Unfortunately, the second digit is actually a 0 instead of the expected value of 2.
Increasing the setMinimumFractionDigits and setMaxiumFractionDigits calls to 3, yields a result of 3.120E6. The last digit, in this case the third fraction digit, again remains 0 instead of the expected value of 3.
Why is the last digit 0 in these cases? Is there some setup or configuration of the NSNumberFormatter that I'm missing? I am using Xcode version 3.2.2.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论