提问人:Shivam Dokania 提问时间:2/23/2023 最后编辑:Vlad from MoscowShivam Dokania 更新时间:2/23/2023 访问量:73
C 语言:数据类型“double”的行为类似于数据类型“float”
C Language: The datatype "double" is acting like the datatype "float"
问:
我正在学习C语言。 我正在尝试打印数据类型为“double”的一组数字,但它只打印了像“float”这样的 7 位数字。
例如:
double temp = 23.3456789112345;
printf("%1f\n", temp);
输出:
23.345679
但是,一旦我更改了小数点的位置,如下所示:
double temp = 2334567.89112345;
printf("%1f\n", temp);
它输出如下:
2334567.891123
所以它几乎奏效了。它不是只输出 7 位数字,而是打印 13 位数字。但我认为数据类型“double”可以打印 15-16 位数字。
答:
3赞
Vlad from Moscow
2/23/2023
#1
来自 C 标准(7.21.6.1 fprintf 函数)
f,F表示浮点数的双精度参数将转换为格式为 [−]ddd.ddd 的十进制表示法,其中 小数点字符后面的位数等于 精密规格。如果缺少精度,则将其视为 6个;如果精度为零且未指定 # 标志,则否 出现小数点字符。如果出现小数点字符, 它前面至少出现一个数字。该值四舍五入为 适当的位数。
例如,你可以写
double temp = 23.3456789112345;
printf("%.16f\n", temp);
请注意,(我认为您想使用而不是 )中的长度修饰符是多余的,并且没有效果。l
%lf
%lf
%1f
评论
printf()
1
%1f
%lf
1
l