Ios 使用NSNumberFormatter显示非常大的数字
我正在为iPhone开发一个计算器应用程序 在显示大于15位的计算结果时,我在使用NSNumberFormatter时遇到了一个问题 例如,计算结果111111111111111x12=22222222(正确)。但是,计算结果1111111111 x 2=22222 0(错误!) 使用Ios 使用NSNumberFormatter显示非常大的数字,ios,xcode,nsnumberformatter,Ios,Xcode,Nsnumberformatter,我正在为iPhone开发一个计算器应用程序 在显示大于15位的计算结果时,我在使用NSNumberFormatter时遇到了一个问题 例如,计算结果111111111111111x12=22222222(正确)。但是,计算结果1111111111 x 2=22222 0(错误!) 使用NSNumberFormatter可以显示的位数是否有限制,或者有人能告诉我计算结果显示不正确的原因吗?? 提前谢谢 示例代码: double absResult = fabs(_result); NSLog(@"
NSNumberFormatter
可以显示的位数是否有限制,或者有人能告诉我计算结果显示不正确的原因吗??提前谢谢 示例代码:
double absResult = fabs(_result);
NSLog(@"_result = %f", _result);
//_result is the result of the calculation that will be placed onto displayLabel below
// _result = 2,222,222,222,222,222 for the calculation 1,111,111,111,111,111 x 2
NSNumberFormatter *displayString = [[NSNumberFormatter alloc]init];
//** Adds zero before decimal point **
[displayString setMinimumIntegerDigits:1];
[displayString setUsesGroupingSeparator:YES];
[displayString setGroupingSeparator:@","];
[displayString setGroupingSize:3];
[displayString setMinimumFractionDigits:2];
[displayString setMaximumFractionDigits:2];
NSString *resultString = [displayString stringFromNumber:[NSNumber numberWithDouble: _result]];
self.displayLabel.text = resultString;
这与
NSNumberFormatter
的功能无关,只与double
浮点数的精度有关。double
类型使用8个字节来存储53位尾数和11位指数。看
53位尾数太小,无法准确表示22222,因此double
被设置为最接近的表示形式
如果你想要更高的精度,你应该试试NSDecimalNumber
,它更适合计算器应用