0

我正在尝试将字符串转换为双精度值以将其用作注释中的坐标。

我需要双精度值在地图上放置 5 个小数位。

假设字符串是hello,我需要的双精度是whatsup

字符串的格式正是我想要的格式,我想让它成为双精度,所以我使用了字符串的 doublevalue 属性。

NSString *hello = @"12.61655";
double whatsup = hello.doubleValue;
NSLog(@"%f",whatsup); //this gives 12.616550 WITH A ZERO in the end
NSLog(@"%.5f",whatsup); //This gives me the correct value of 12.61655 with only 5 decimal places

所以现在如果我想写:

coordinate.latitude = whatsup 

它给出了带有额外零的双倍。

我该怎么写

coordinate.latitude = SOMETHING HERE 

哪个是只有 5 个小数位的双精度数?
我可以在这里以某种方式实现“%.5f”吗?

已经尝试过 numberformatter,但它给了我一个 NSnumber。我需要一个双:

我在 for 循环中使用此代码来绘制注释(引脚)。

当我对双打使用相同的 forloop 时,我对其进行硬编码时效果很好。但是当我使用此代码从 csv 文件中获取值时,我没有得到任何引脚:

double latitudeFromCSV = [[components objectAtIndex:0] doubleValue];
double longitudeFromCSV = [[components objectAtIndex:1] doubleValue];
CLLocationCoordinate2D annotationCoord;
annotationCoord.latitude = latitudeFromCSV;
annotationCoord.longitude = longitudeFromCSV;
4

1 回答 1

1

查看 NSString 方法-stringWithFormat:

但是为了让它变得更好,你需要删除前导零,因为你不知道不会有像@“12.50000”这样的值。


NSNumberFormatter * nf = [[NSNumberFormatter new] autorelease];
nf.maximumFractionDigits = 5;
NSLog(@"%@", [nf stringFromNumber:[NSNumber numberWithFloat:@"12.61655f".doubleValue]]);

应该给你12.61655作为输出字符串。

于 2012-09-11T00:10:12.520 回答