我看到一些代码尝试使用以下NSNumberFormatter格式化lat long。
NSNumberFormatter * sut = [[NSNumberFormatter alloc] init];
[sut setMaximumFractionDigits:20]; // also tried set to 15 or 16, not working too.
[sut setMaximumSignificantDigits:20];
NSLocale *enUSPOSIXLocale = [[NSLocale alloc]initWithLocaleIdentifier:@"en_US_POSIX"];
[sut setLocale:enUSPOSIXLocale];
NSString *expected = @"1.299129258067496"; // 16 significants digits
NSString *actual = [sut stringFromNumber:@(1.299129258067496)];
[[actual should] equal:expected];// Failed to pass, the actual is @"1.2991292580675"
虽然在这种情况下,我们可能不需要使用NSNumberFormatter来获得正确的结果,但我想知道为什么NSNumberFormatter只返回最多14位有效数字的字符串。
答案 0 :(得分:1)
它只显示14位小数,因为double类型在15位小数处舍入。这对我有用,因为你可以设置显示的小数位数。
[NSString stringWithFormat:@"%.20f", 1.299129258067496]
确保小数位数不超过该数字,否则程序会补充数字以填补其余数字。希望这会有所帮助。