我有两个双数字的a和b
double a = 1.01, b = 1.2345678然后printf("%.4f %.4f", a, b)将输出
1.0100 1.2345但是我想输出
1.01 1.2345也就是说,删除无用的0。
发布于 2015-10-29 15:36:29
%.4f将始终通过填充零来打印最多4个小数。您可以删除%.4f并使用%g打印不带填充零的精确值
g,G双参数转换为样式f或e(对于G转换,则为F或E)。精度指定有效位数。如果缺少精度,则提供6位数字;如果精度为零,则将其视为1。如果转换得到的指数小于-4或大于或等于精度,则使用样式e。从结果的小数部分中删除尾随零;只有在小数点后面至少跟一个数字时才会出现小数点。
发布于 2015-10-29 15:36:43
这不是您想要的,但您可以使用%g而不是%f,如下所示:
double a = 1.01, b = 1.2345678;
printf("%.4g %.4g\n", a, b);精度值在"g“格式中的解释与在"f”格式中的不同。"f“的精度指定小数点后的位数。"g“的精度指定打印的最大有效位数。
发布于 2015-10-29 15:36:54
如果指定宽度...然后你就会得到那个宽度。
只需使用"%g“或"%f”即可。
从"man“页面:
http://linux.die.net/man/3/printf
g,G
double参数转换为样式f或e(对于G转换,则为F或E)。精度指定有效位数。如果缺少精度,则提供6位数字;如果精度为零,则将其视为1。如果转换得到的指数小于-4或大于或等于精度,则使用样式e。从结果的小数部分中删除尾随零;只有在小数点后面至少跟一个数字时才会出现小数点。
https://stackoverflow.com/questions/33408316
复制相似问题