小编css*_*ulu的帖子

具有说明符"%g"的printf的精度

任何人都可以解释一下[.precision]printf 如何使用说明符"%g"吗?我对以下输出感到困惑:

double value = 3122.55;
printf("%.16g\n", value); //output: 3122.55
printf("%.17g\n", value); //output: 3122.5500000000002
Run Code Online (Sandbox Code Playgroud)

我已经知道%g使用最短的表示法.

但以下的输出仍然让我感到困惑

printf("%.16e\n", value); //output: 3.1225500000000002e+03
printf("%.16f\n", value); //output: 3122.5500000000001819
printf("%.17e\n", value); //output: 3.12255000000000018e+03
printf("%.17f\n", value); //output: 3122.55000000000018190
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么%.16g给出确切的数字而%.17g不能?

似乎16位有效数字可以准确.谁能告诉我原因?

c printf

14
推荐指数
2
解决办法
1万
查看次数

标签 统计

c ×1

printf ×1