这是我的代码:
float x = 21.195;
printf("%.2f\n", x);
printf("%.2f\n", 21.195);
Run Code Online (Sandbox Code Playgroud)
我希望两个打印语句具有相同的输出,但相反,第一次打印21.19,第二次打印21.20.
有人能解释为什么输出不同吗?
Gor*_*off 16
价值观不同.第一个是a float,通常是4个字节.第二个是a double,通常是8个字节.
舍入规则基于小数位后的第三位数.因此,在一种情况下,值类似于21.19499997,而另一个21.1950000000001,或类似的东西.(这些用于说明舍入和不精确的数字格式的问题.)