如何使用 %g 并确保小数点后的位数在 printf 中不超过 6?



我想使用%g,同时,我不希望小数点后的位数超过6。

例如,对于0,我希望显示"0"而不是"0.00000000";对于0.50000001,我想显示"0.5"而不是"0.500000"或"0.50000001"。

如何使用printf格式?

这应该适用于您:

#include <stdio.h>
int main() {
    double a = 0.0; // or 0.50000001
    if(a == 0)
        printf("%.0gn", a);
    else
        printf("%.2gn", a);

    return 0;
}

输出:

0    //if a == 0
0.5  //if a == 0.50000001 

简单使用"%g"

小数点后的默认精度为6位数。"最后,除非使用#标志,否则从结果的小数部分中删除任何尾随零,如果没有小数部分,则删除小数点字符。"C11§7.21.6.1

const char *format = "%gn";
printf(format, 0.0);
printf(format, 0.50000001);
printf(format, 123.0);
printf(format, 0.123456789);
0
0.5
123
0.123457

相关内容

最新更新