Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用NSNumberFormatter显示非常大的数字_Ios_Xcode_Nsnumberformatter - Fatal编程技术网

Ios 使用NSNumberFormatter显示非常大的数字

Ios 使用NSNumberFormatter显示非常大的数字,ios,xcode,nsnumberformatter,Ios,Xcode,Nsnumberformatter,我正在为iPhone开发一个计算器应用程序 在显示大于15位的计算结果时,我在使用NSNumberFormatter时遇到了一个问题 例如,计算结果111111111111111x12=22222222(正确)。但是,计算结果1111111111 x 2=22222 0(错误!) 使用NSNumberFormatter可以显示的位数是否有限制,或者有人能告诉我计算结果显示不正确的原因吗?? 提前谢谢 示例代码: double absResult = fabs(_result); NSLog(@"

我正在为iPhone开发一个计算器应用程序

在显示大于15位的计算结果时,我在使用NSNumberFormatter时遇到了一个问题

例如,计算结果111111111111111x12=22222222(正确)。但是,计算结果1111111111 x 2=22222 0(错误!)

使用
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
,它更适合计算器应用