测试用例:
NSLog(@"%f", M_PI);
NSLog(@"%@", [NSString stringWithFormat:@"%f", M_PI]);
NSLog(@"%@", [NSNumber numberWithDouble:M_PI]);
结果:
结论:
1)通过NSLog()或[NSString stringWithFormat]打印提供了非常低的精度...
2)通过[NSNumber numberWithDouble]打印可提供更好的精度...
我本来希望得到的结果更接近原始值:3.14159265358979323846264338327950950288(在math.h中定义)
有什么线索吗?
最佳答案
前两行四舍五入到小数点后六位,因为这是从C继承的printf
的默认舍入长度。
第三行以最高的有用精度显示数据-IEEE 754 64位浮点数的精度略小于16位十进制数字,因此math.h
中的文字的所有这些数字都是毫无意义的(也许可以将它们视为将来的-证明将来可能以更精确的格式重新定义)。
关于iphone - 如何在iOS上以全精度打印 double 图?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5729004/