我想将字符串转换为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
答案 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。
如果字符串格式正确,则可以使用:
将其简单地转换为floatNSString *val = @"3.45";
float fCost = [val floatValue];
答案 3 :(得分:0)
if(balance-(amount+5) < -150)
64位浮点数(double),如果指数小于-4或大于或等于精度,则以%e的样式打印,否则为%f的样式。