我有一个浮动的纬度,我希望小数部分精确到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/