圆形浮动到NSNumber得到了NaN

时间:2014-07-16 08:47:46

标签: ios nan nsnumber

我有一个浮动纬度,我想要小数部分的精确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。在我看来,原因可能是计时器。

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

使用此[NSString stringwithFormat:@"%.4f",[nLatitude floatValue]];