【问题标题】:C: Specifying a variable number of decimal points for output of float in printf? [duplicate]C:为printf中的float输出指定可变的小数位数? [复制]
【发布时间】:2015-10-20 12:15:43
【问题描述】:

我刚刚开始掌握 C。我正在尝试打印一个浮点数,我知道我可以执行以下操作...

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

但我只想打印特定数量的小数点,由变量“decimalPoints”指定。通过读取字符串并使用 sscanf 将其转换为浮点数来确定小数点值。因此,它不限于特定值,因此例如 %.2f 将不起作用。但是假设decimalPoints的值为2,有没有办法做到这一点?

即以下格式的东西?

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

【问题讨论】:

  • 标题暗示您的程序在使用sscanf 时崩溃,但帖子与崩溃无关并询问其他内容。
  • 一个好的printf and family reference 可能会派上用场。
  • printf("Rate: %{decimalPoints}f.\n",rate); 它将输出为{decimalPoints}f.
  • 如果有更多的程序员阅读文档,他们就不必过多地猜测语法可能是什么。 ;)
  • 抱歉各位,我不是想发布那个标题,这是我在发布之前设法解决的上一个问题的标题的开头。

标签: c


【解决方案1】:

您无法像这样指定要打印多少个浮点小数位。

而不是

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

printf("Rate: %.*f\n", decimalPoints, 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

比率:1.2

率:1.22

汇率:1.223

汇率:1.2233

汇率:1.22332

【讨论】:

    猜你喜欢
    • 2022-11-18
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    相关资源
    最近更新 更多