Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
Iphone 使用intvalue、floatValue发出_Iphone - Fatal编程技术网

Iphone 使用intvalue、floatValue发出

Iphone 使用intvalue、floatValue发出,iphone,Iphone,计算器。每次我单击一个数字按钮时,标签都会附加到一个“displaystring”可变字符串中。我注意到,在为同一个数字输入11位数字后,floatValue或intValue函数会给出相同的错误 self.lbldisplay.text正确显示displaystring的内容。但是 输入10位数字后,intValue或floatValue甚至NSCanner实用程序都会返回相同的错误 以下是代码和日志: // original [self.displayString appendStrin

计算器。每次我单击一个数字按钮时,标签都会附加到一个“displaystring”可变字符串中。我注意到,在为同一个数字输入11位数字后,floatValue或intValue函数会给出相同的错误

self.lbldisplay.text正确显示displaystring的内容。但是 输入10位数字后,intValue或floatValue甚至NSCanner实用程序都会返回相同的错误

以下是代码和日志:

// original  
[self.displayString appendString: [NSString stringWithFormat: @"%i", [sender tag]]];

else { // new entry      
    //origin test
    [self.displayString setString:@""];
    [self.displayString appendString: [NSString stringWithFormat: @"%i", [sender tag]]];
    bIsTypingANumber = TRUE;
}

//  fCurrentNumber = [self.displayString floatValue];
//   [self display:fCurrentNumber];
// self.lblDisplay.text = displayString;

NSString *numberString; 

NSString *str = [NSString stringWithString:displayString];

NSScanner *theScanner = [NSScanner scannerWithString:str];

[theScanner scanUpToCharactersFromSet:[NSCharacterSet decimalDigitCharacterSet] intoString:nil];
[theScanner scanCharactersFromSet:[NSCharacterSet decimalDigitCharacterSet] intoString:&numberString];

NSLog(@"Attempts: %i", [numberString integerValue]);

self.lblDisplay.text = str;
输出:

2012-08-26 17:23:34.264 Pilots Fuel[4989:f803] Attempts: 1
2012-08-26 17:23:34.400 Pilots Fuel[4989:f803] Attempts: 11
2012-08-26 17:23:34.552 Pilots Fuel[4989:f803] Attempts: 111
2012-08-26 17:23:34.800 Pilots Fuel[4989:f803] Attempts: 1111
2012-08-26 17:23:34.936 Pilots Fuel[4989:f803] Attempts: 11111
2012-08-26 17:23:35.072 Pilots Fuel[4989:f803] Attempts: 111111
2012-08-26 17:23:35.216 Pilots Fuel[4989:f803] Attempts: 1111111
2012-08-26 17:23:35.344 Pilots Fuel[4989:f803] Attempts: 11111111
2012-08-26 17:23:35.488 Pilots Fuel[4989:f803] Attempts: 111111111
2012-08-26 17:23:35.632 Pilots Fuel[4989:f803] Attempts: 1111111111
2012-08-26 17:23:35.776 Pilots Fuel[4989:f803] Attempts: 2147483647
2012-08-26 17:23:36.056 Pilots Fuel[4989:f803] Attempts: 2147483647

这是因为整数数据类型溢出,该类型只能保存-2147483648到2147483647(大小为32位)之间的值。
double
数据类型可以保存较大的值,但最终会失去精度

试一试


这将使用64位精度,并允许更多位数。

这是因为整数数据类型溢出,该类型只能保存-2147483648到2147483647之间的值(大小为32位)。
double
数据类型可以保存较大的值,但最终会失去精度

试一试


它将使用64位精度,并允许使用更多的数字。

欢迎使用SO。请写清楚你的问题的问题。此外,如果您提供代码示例,请确保它们的格式正确,以便其他人更容易阅读

请注意,您使用的是
int
float
,两者都有大小限制。它们不能代表所有可能的数字。可以使用双精度和64位整数,但它们也有限制。如果您确实需要更大的数字,请查看
NSDecimalNumber
是否适合您的用例。它确实有一个限制(尽管相当大)


如果您需要更大的数字,则需要使用支持任意大数字的库。

欢迎使用。请写清楚你的问题的问题。此外,如果您提供代码示例,请确保它们的格式正确,以便其他人更容易阅读

请注意,您使用的是
int
float
,两者都有大小限制。它们不能代表所有可能的数字。可以使用双精度和64位整数,但它们也有限制。如果您确实需要更大的数字,请查看
NSDecimalNumber
是否适合您的用例。它确实有一个限制(尽管相当大)


如果您需要更大的数字,则需要使用支持任意大数字的库。

做得好-我收到了相同的“错误”,但很晚会遇到非常大的数字。Thaaaaannkss:-()()()))做得很好-我得到了同样的“错误”,但很晚就有了一个非常巨大的数字。Thaaaaannkss:-()()()))谢谢你的回答-我正在努力理解这个网站的用户界面,但我并不总是清楚这一点。谢谢你的回答。谢谢你的回答-我正在努力理解这个网站的用户界面,这对我来说并不总是清楚的。谢谢你的回答。
NSLog(@"Attempts: %lli", [numberString longLongValue]);