代码来源于计算机二级c的模拟考试中的一部分,我试了一下基本所有的输出数据都被加了0.000001
#include
#include
#include
void main()
{
float a;
system("CLS");
printf("Enter a: ");
scanf ("%f",&a);
printf("The original data is : ");
printf("%f\n\n", a);
}
这是精度问题。浮点数遇到无限循环小数,它只能用固定的位数表示,超过的尾数就只能四舍五入了。
所以输出的结果会有误差。
因为浮点数在计算机内是二进制表示的,所以十进制为整的数,二进制不见得不是有限小数。
比如0.1,二进制表示就是0.000110011001100110011... (0011循环)
像0.5 0.25 0.75 0.125 等等数(可以表示为1/2的n次方构成的数字的和),你可以输入下,因为用二进制表示是有限小数,所以结果应该没有误差。