C:指定printf中浮点输出的可变小数点数?

C:指定printf中浮点输出的可变小数点数?,c,C,我刚刚开始学习C语言。我正在尝试打印一个浮点数,我知道我可以如下所示 printf("Rate: %f.\n",rate); 但我只想打印特定数量的小数点,由变量“decimalPoints”指定。通过读取字符串并使用sscanf将其转换为浮点来确定小数点的值。因此,它不限于特定的值,因此%.2f将不起作用。但是如果分点的值是2,有没有办法做到这一点 i、 e.以下格式的东西 int decimalPoints = 2; printf("Rate: %{decimalPoints}f.\n",

我刚刚开始学习C语言。我正在尝试打印一个浮点数,我知道我可以如下所示

printf("Rate: %f.\n",rate);
但我只想打印特定数量的小数点,由变量“decimalPoints”指定。通过读取字符串并使用sscanf将其转换为浮点来确定小数点的值。因此,它不限于特定的值,因此%.2f将不起作用。但是如果分点的值是2,有没有办法做到这一点

i、 e.以下格式的东西

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

无法指定要这样打印的浮点小数位数

而不是

printf("Rate: %{decimalPoints}f.\n",rate);

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

一些测试:

#include <stdio.h>

int main(void) {
    float rate = 1.223321f;
    int decimalPoints;
    for (decimalPoints = 0; decimalPoints < 6; decimalPoints++)
    {
        printf("Rate: %.*f \n", decimalPoints, rate);
    }
}
#包括
内部主(空){
浮动率=1.223321f;
整数分点;
用于(小数点=0;小数点<6;小数点++)
{
printf(“速率:%.*f\n”,小数点,速率);
}
}
输出:

费率:1

比率:1.2

比率:1.22

比率:1.223

比率:1.2233

比率:1.22332


标题暗示您的程序在使用
sscanf
时崩溃,但帖子与崩溃无关,并询问了其他问题。一个好消息可能会派上用场。
printf(“Rate:%{decimalPoints}f.\n”,Rate)
它将以
{decimalPoints}f.的形式给出输出。
如果更多的程序员阅读文档,他们就不必猜测语法可能是什么对不起,伙计们,我不是有意要发布那个标题的,这是我在发布之前设法解决的一个问题的标题的开始。
#include <stdio.h>

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