C - 使用 getchar 读取浮点值并使用 printf 打印出浮点数

Fea*_*ath 0 c

我非常迷茫和困惑。

我必须使用 getchar 读取像 3.432 这样的浮点整数。然后,我必须使用 printf 将其作为精度为 4 位小数的浮点数再次打印出来。所以 3.432 --> 3.4320 和 .450 --> .4500 和 453 --> 453.0000。

我一直在使用 getchar() 并且我理解这一点,但是尝试将值重新转换为浮点数是我非常迷茫的地方。

 float num = 0.0;
 char ch;
 while((ch = getchar()) != '\n'){
      num = ch - '0';
      printf("%.4f", num);
 }
Run Code Online (Sandbox Code Playgroud)

我知道为什么这是错误的以及它输出什么,但这就是我到目前为止所拥有的

编辑:我只能使用 getchar 来读取浮点值

LPs*_*LPs 5

未测试(没有时间)。希望能帮助到你。

#include <stdio.h>

int main(void)
{
    float num = 0.0;
    float i = 1.0;
    char ch;

    printf("Enter a float number: ");

    while((ch = getchar()) != '\n')
    {
        if (ch == '.')
        {
            i = 0.1;
        }
        else if ((ch>= '0') && (ch <='9'))
        {
            if (i==1)
            {
                num *= 10;
                num += ch - '0';
            }
            else
            {
                num += (ch - '0') * i;
                i /= 10;
            }
        }
    }

    printf("%.4f\n", num);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)