你好,C语言
上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仍然会出现误差。

在日常应用中,我们通常不会苛求一个数值的精度完美无误,而允许一定的误差范围。但是,如果涉及高精度计算,需要采用特殊的方法进行数值计算,以尽量减少误差。