qq_43185390 2018-09-11 15:33 采纳率: 0%
浏览 1300

为什么c中输入一个数,然后马上输出,都到的结果却不一样?

代码来源于计算机二级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);
}

  • 写回答

1条回答 默认 最新

  • threenewbee 2018-09-11 15:37
    关注

    这是精度问题。浮点数遇到无限循环小数,它只能用固定的位数表示,超过的尾数就只能四舍五入了。
    所以输出的结果会有误差。

    因为浮点数在计算机内是二进制表示的,所以十进制为整的数,二进制不见得不是有限小数。
    比如0.1,二进制表示就是0.000110011001100110011... (0011循环)

    像0.5 0.25 0.75 0.125 等等数(可以表示为1/2的n次方构成的数字的和),你可以输入下,因为用二进制表示是有限小数,所以结果应该没有误差。

    评论

报告相同问题?

悬赏问题

  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办