<分区>
下面是我的代码和程序输出:
#include <stdio.h>
int main()
{
float salary;
printf("Please enter the salary : ");
scanf("%f", &salary);
printf("Your Salary is : %f\n", salary);
}
desktop:~$ ./a.out
Please enter the salary : 101.8889999
Your Salary is : 101.889000
desktop:~$
我通过输入随机十进制值尝试了很多方法,但有时它会打印出正确的值(在 scanf 调用期间输入),有时它只会打印出接近它的值。为什么 float 变量值没有打印输入的正确值?
按照上面的例子 - 如果我输入 101.8889999 那么保存在 salary float 变量中的值是 101.889000?
我尝试将最后一行更改为:
printf("Your Salary is : %10.9f\n", salary);
但它仍然给出以下输出:
Please enter the salary : 101.889000
Your Salary is : 101.888999939
Please enter the salary : 10.999999999
Your Salary is : 11.000000000
哪个是使用 printf 打印 float 的正确值?float 值是否可以/不能存储为 float 变量中输入的精确值?