浮点值显示不正确

Float value showing incorrectly

当我编写一个简单的程序来使用 float 读取和打印数字时,我遇到了一些意想不到的结果。

在下面的程序中,当我输入数字100.62时,得到的结果是100.620003。该值最多只能正确显示八位数字。即使我尝试了不同的数字,问题仍然存在。为什么是这样?除了限制小数点之外,有没有办法解决这个问题。

还有没有办法按原样打印数字? IE;如果我输入 100.62,它应该打印 100.62,如果输入 100.623,它应该打印 100.623(不是 100.620000 和 100.623000)。

int main (void)
{
    float i;
    printf ("Enter a number : ");
    scanf ("%f", &i);
    printf ("You entered the number : %f", i)
    return 0;
}

这个问题来自于计算机如何处理浮点值。

解决此问题的一种方法是停止使用 float 并将数字作为十进制数据处理。

要按原样打印数字,只需将输入读取为字符串并打印即可。该方法非常简单,可以支持1e-100001.00000.

等高难度输入

据我所知,C默认显示的都是float的完整数字

如果您想显示自定义小数点,您应该尝试在 f 符号前使用“.x”。 X 是您要在点后显示的总数。例如:

float i;
printf ("Enter a number : ");
scanf ("%f", &i);
printf ("You entered the number : %.2f", i)
return 0;

这将导致点后有 2 个数字。如果您输入 100.62,它将显示为 100.62。然而,这是静态的。我的意思是,如果您输入 100.623,它会显示 100.62,而不是 100.623。您应该确切知道要显示的点后有多少个数字。