为什么在这个C程序中,'double'不会'double'存储/打印比'float'更多的精度值?

Bun*_*edu -1 c floating-point precision double

如果我运行此代码:

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

它打印:

浮点值为1.123457

双精度值为1.123457

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

dbu*_*ush 5

%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);
Run Code Online (Sandbox Code Playgroud)

输出:

The float value is 1.123456835746765
The double value is 1.123456789876543
Run Code Online (Sandbox Code Playgroud)

  • @BundiBedu不是完全随机的,而是与实际二进制值stroed最接近的十进制值. (2认同)