将NSString转换为float - Objective C

时间:2016-03-14 16:43:09

标签: ios objective-c nsstring

我想将字符串转换为float,这里是我写的代码:

NSString *latString = [[response valueForKey:@"coords"] valueForKey:@"lat"];
NSLog(@"Latitude String: %@", latString);
self.coordLat = [latString floatValue];
NSLog(@"Latitude: %lu", (unsigned long) self.coordLat);

但这是我得到的:

2016-03-14 17:36:00.471 marsad[9968:186761] Latitude String: 36.860532
2016-03-14 17:36:00.587 marsad[9852:152630] Latitude: 36

4 个答案:

答案 0 :(得分:3)

unsigned long类型与integers类似,因此小数点自然会被截断。

请尝试NSLog(@"Latitude: %f", self.coordLat);

答案 1 :(得分:0)

NSLog(@"Latitude: %lu", (unsigned long) self.coordLat);

这会将值转换为long。 你应该使用类似的东西:

NSLog(@"Latitude: %f", self.coordLat);

答案 2 :(得分:0)

您可以使用NSString floatValue只读属性,如Apple docs中所述:

  

此属性不包含字符串开头的空格。溢出时该属性为HUGE_VAL或-HUGE_VAL,下溢时为0.0。如果字符串不以浮点数的有效文本表示开头,则此属性为0.0。

如果字符串格式正确,则可以使用:

将其简单地转换为float
NSString *val = @"3.45";
float fCost = [val floatValue];

答案 3 :(得分:0)

if(balance-(amount+5) < -150)

64位浮点数(double),如果指数小于-4或大于或等于精度,则以%e的样式打印,否则为%f的样式。

相关问题