C语言:数据类型“double”的作用类似于数据类型“float”

gg58donl  于 2023-03-01  发布在  其他
关注(0)|答案(1)|浏览(160)

我正在学习C语言。我试图打印一组数据类型为"双精度"的数字,但它只打印了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位数。

wljmcqd8

wljmcqd81#

来自C标准(7.21.6.1 fprintf函数)

    • f,F**表示浮点数的双精度参数转换为[−] ddd. ddd格式的十进制表示法,其中小数点字符后的位数等于精度规范。如果缺少精度,则取6;如果精度为零且未指定#标志,则不显示小数点字符。如果显示小数点字符,则在其前面至少显示一个数字。该值将舍入到适当的位数。

比如你可以写

double temp = 23.3456789112345;

printf("%.16f\n", temp);

注意,%lf中的长度修饰符l(我认为您希望使用%lf而不是%1f)是多余的,没有任何作用。

相关问题