c - 为什么在这个 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。
解决方案
格式说明%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
推荐阅读
- netlogo - 两个不相关的条件 - 预期的命令错误
- php - Laravel 将数组合并为一个数组
- c - 为非阻塞 connect() 编写代码的理想方法是什么?
- ios - 如何在 SwiftUI 中创建网格视图?
- android - 符号层和圆形层崩溃的Android Studio Mapbox层问题
- angular - 如何在角度路线之间传递一些额外的动态数据?
- beego - 找到模块 github.com/ataxie/beego@latest (v1.12.3),但不包含包 github.com/ataxie/beego/client/orm
- python - 以优化模式运行诗歌安装的 python 脚本
- javascript - html5 音频:区分 NotAllowedError 和 NotSupportedError
- plot - 根据旧的 x 范围调整散景中的 extra_x_range