上QQ阅读APP看书,第一时间看更新
3.2.2 double
有没有比float精度更高的数据类型呢?有的,它被称为双精度浮点型double。我们将程序清单3.4中的float替换为double。
那么在printf函数中,我们是否需要更改使用的占位符呢?
答案是否定的。我们需要记住,在printf函数中,无论是使用float还是double,都可以使用%f作为占位符。程序清单3.5是更改后的代码。
程序清单 3.5
#include <stdio.h> int main() { double a = 1.234567; double b = 0.00001; double c = 365.12345; printf("%f\n", a); printf("%f\n", b); printf("%f\n", c); return 0; }
结果如图3.13所示。我们可以看到,这次的结果365.12345也是正确的。
图3.13 初识double类型
但需要注意的是,double类型同样存在精度范围。对于更高精度的数据,double仍然会出现误差。
在日常应用中,我们通常不会苛求一个数值的精度完美无误,而允许一定的误差范围。但是,如果涉及高精度计算,需要采用特殊的方法进行数值计算,以尽量减少误差。