我有一个浮动的纬度,我希望小数部分精确到6位数字。
当我做

NSNumber * nLatitude = @(round(latitude*1e6)/1e6);
NSLog(@"%f %@", latitude, nLatitude);

有时我得到正确的结果:
48.8282641210 48.828264

其他时候我得到NaN:
48.8281686092  nan

有人有主意吗?

感谢您的所有回复。确实,NSNumberFormatter解决了问题,我仍然想找到问题的根源。
舍入数字是为了节省磁盘空间和更好的可读性。它用于记录大量位置。

以下是更多详细信息:

我有一个跟踪,并且在模拟器上模拟了位置的变化。位置由带有计时器的FakeLocationManager发送。
- (void)locationManager:(FakeLocationManager *)manager didUpdateLocation:(CLLocation *)location{
     // Here the code I round floats
}

有时会发送重复的位置,第一个位置正确工作,然后在同一位置显示NaN。在我看来,原因可能是计时器。

最佳答案

我很少需要关心浮点值的小数位数。

我怀疑问题是表示形式之一,在这种情况下,[NSString stringWithFormat:]可用于指定浮点值的小数位数:

_myLabel.text = [NSString stringWithFormat:@"%.6f", [nLatitude doubleValue]];
//                                           ^^^^

关于ios - 到NSNumber的来回 float 得到NaN,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24776234/

10-11 13:58