C:为printf中的float输出指定可变数量的小数点?

Wol*_*lff 0 c

我只是想要处理C.我正在尝试打印一个浮点数,我知道我可以做如下...

printf("Rate: %f.\n",rate);
Run Code Online (Sandbox Code Playgroud)

但我想只打印一个特定数量的小数点,由变量"decimalPoints"指定.decimalPoints值是通过读取字符串并使用sscanf将其转换为float来确定的.因此,它不限于特定值,因此%.2f将不起作用.但是说decimalPoints的值是2,有没有办法去做呢?

即具有以下格式的东西?

int decimalPoints = 2;
printf("Rate: %{decimalPoints}f.\n",rate);
Run Code Online (Sandbox Code Playgroud)

Mag*_*sch 7

您不能指定要打印的浮点小数位数.

代替

printf("Rate: %{decimalPoints}f.\n",rate);
Run Code Online (Sandbox Code Playgroud)

printf("Rate: %.*f\n", decimalPoints, rate);
Run Code Online (Sandbox Code Playgroud)

%.*f 在printf中使用将把字符串后面的第一个整数参数作为要用浮点数打印的小数位数.

一些测试:

#include <stdio.h>

int main(void) {
    float rate = 1.223321f;
    int decimalPoints;
    for (decimalPoints = 0; decimalPoints < 6; decimalPoints++)
    {
        printf("Rate: %.*f \n", decimalPoints, rate);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

费率:1

比率:1.2

比率:1.22

费率:1.223

速度:1.2233

速度:1.22332