NSString floatValue似乎无法正常运行

时间:2012-07-08 02:46:34

标签: ios

我在xib文件中有一个文本字段。在.m文件中的方法中,我可以打印文本字段的内容,但是我无法将这些内容转换为浮点数。文本字段使用逗号格式化,如123,456,789。下面是代码片段,其中datacellR2C2是文本字段。

float originalValue2 = originalValue2 = [datacellR2C2.text  floatValue];
NSLog(@"datacellR2C2 as text --> %@ <---\n",datacellR2C2.text);  // this correctly shows the value in datacellR2C2
NSLog(@"originalValue2 = %f  <--\n", originalValue2);  // this incorrectly returns the value 1.0 

我将不胜感激任何有关我应该寻找问题的方法或方向的建议。

1 个答案:

答案 0 :(得分:1)

-floatValue的声明中显示评论:

  

/ *以下便捷方法均跳过初始空格字符   (whitespaceSet)并忽略尾随字符。可以使用NSScanner   更准确地解析数字。   * /

Ergo,逗号导致截断,因为它们是尾随字符。即使你提供的字符串(123,456,789)也仅打印123.000,因为这是-floatValue所见。

//test
NSString *string = @"123,456,789";
float originalValue2 = [string  floatValue];
NSLog(@"datacellR2C2 as text --> %@ <---\n",string);  // this correctly shows the value in datacellR2C2
NSLog(@"originalValue2 = %f  <--\n", originalValue2);

//log
2012-07-07 22:16:15.913 [5709:19d03] datacellR2C2 as text --> 123,456,789 <---
2012-07-07 22:16:15.916 [5709:19d03] originalValue2 = 123.000000  <--

只需使用简单的+stringByReplacingOccurrencesOfString:withString:删除它们,然后删除这些逗号:

//test
NSString *string = @"123,456,789";
NSString *cleanString = [string stringByReplacingOccurrencesOfString:@"," withString:@""];
float originalValue2 = [cleanString  floatValue];
NSLog(@"datacellR2C2 as text --> %@ <---\n",cleanString);  // this correctly shows the value in datacellR2C2
NSLog(@"originalValue2 = %f  <--\n", originalValue2);

//log
2012-07-07 22:20:20.737 [5887:19d03] datacellR2C2 as text --> 123456789 <---
2012-07-07 22:20:20.739 [5887:19d03] originalValue2 = 123456792.000000  <--

顺便说一句,浮点数将该字符串舍入为偶数,而是使用双精度。