我有一个浮动纬度,我想要小数部分的精确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。在我看来,原因可能是计时器。
答案 0 :(得分:3)
我很少需要关心浮点值的小数位数。
我怀疑问题是演示问题,在这种情况下[NSString stringWithFormat:]
可用于指定浮点值的小数位数:
_myLabel.text = [NSString stringWithFormat:@"%.6f", [nLatitude doubleValue]];
// ^^^^
答案 1 :(得分:0)
使用此[NSString stringwithFormat:@"%.4f",[nLatitude floatValue]];