首页 > 解决方案 > 为什么在这个 C 程序中,'double' 存储/打印的精度值不比 'float' 高?

问题描述

如果我运行此代码:

float a=1.123456789;
printf("The float value is %f\n",a);
double b=1.123456789876543
printf("The double value is %lf",b);

它打印:

浮点值为 1.123457

双精度值为 1.123457

第一行是可以理解的,因为 float 的精度约为 6 个十进制数字。但是第二行不应该显示更多数字吗?如果有帮助,我正在使用适用于 Windows 的 Turbo C++ 4.0。

标签: cfloating-pointdoubleprecision

解决方案


格式说明%f符默认打印 6 位精度。如果要打印更多数字,则需要为格式说明符添加精度:

float a=1.123456789;
printf("The float value is %.15f\n",a);
double b=1.123456789876543;
printf("The double value is %.15lf",b);

输出:

The float value is 1.123456835746765
The double value is 1.123456789876543

推荐阅读