代码来源于计算机二级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);
}
为什么c中输入一个数,然后马上输出,都到的结果却不一样?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- threenewbee 2018-09-11 15:37关注
这是精度问题。浮点数遇到无限循环小数,它只能用固定的位数表示,超过的尾数就只能四舍五入了。
所以输出的结果会有误差。因为浮点数在计算机内是二进制表示的,所以十进制为整的数,二进制不见得不是有限小数。
比如0.1,二进制表示就是0.000110011001100110011... (0011循环)像0.5 0.25 0.75 0.125 等等数(可以表示为1/2的n次方构成的数字的和),你可以输入下,因为用二进制表示是有限小数,所以结果应该没有误差。
解决 无用评论 打赏 举报