C - 使用 getchar 读入 float 值并使用 printf 打印出 float

标签 c

我非常迷茫和困惑。

我必须使用 getchar 读入一个浮点整数,例如 3.432。然后,我必须使用 printf 将其再次打印为精度为小数点后 4 位的 float 。所以 3.432 --> 3.4320 和 .450 --> .4500,以及 453 --> 453.0000。

我一直在使用 getchar() 并且我明白这一点,但是试图将值重新转换为 float 是我非常迷茫的地方。

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

我知道为什么这是错误的,也知道它输出了什么,但这就是我目前所知道的

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

最佳答案

未测试(无时间)。希望对您有所帮助。

#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;
}

关于C - 使用 getchar 读入 float 值并使用 printf 打印出 float,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37341693/

相关文章:

c - ioremap_page_range 和 vmap_page_range 的区别

c - 使用 C 递归删除目录

c - ret2eax 的问题

c++ - CentOS 6.6 上的 libcurl-devel 缺少函数定义

c++ - 为什么 C++ 中的字符串通常以 '\0' 结尾?

c - 更有效的写法?

c - 如何在Csfml中为 map 充电

c++ - 在 C++ header 中声明大数组

c 警告 : use of const variable in a constant expression is non-standard in C

c++ - 如果一个函数没有返回值,但返回类型有效,编译器是否可以返回垃圾?