关于浮点数的尾数问题[网摘收录]

网上的一个基础问题,原题如下:

#include <stdio.h>
int main()
{
  int a;
  float b;
  char c;
  scanf("%d%c%f", &a,&c,&b);
  printf("%d,%c,%f", a,c,b);
    return 0;
}
为什么这个程序输入1234r1234.567时,输出是1234,r,1234.567017后面的017是怎么回事??

网友最佳回答:

  浮点型默认是小数点后六位,虽然你的数据小数点后只有三位,但电脑会为它分配更多的内存地址,后面的多余三位是随机的数据是不确定的,因此换一次运行,结果不是017,也可能是170。你输出是需要限制小数点后的位数,具体参考一下教材。

原文地址:https://www.cnblogs.com/chenxiangxi/p/2222330.html