C语言的问题 超级简单的 …高手就进

来源:百度知道 编辑:UC知道 时间:2024/06/29 00:20:32
同样是浮点型的变量 为什么0.1f和0.1 这两个数用C语言判断是不相等的呢?0.2也是这样 0.5开始就相等了…why?

精度问题,在二进制数中,表示小数,若用N位表示一个小数
则最低位表示的数是 2的 N 此方分之一,精度为 2的(N+1)次方分之一;
一个数若果 >=2的(N+1)次方分之一;最后一位二进制小数用 1 表示,若果小于用 0 表示;所以你在一定范围内 输入的小数可能在计算机中都是同一个二进制数。
在处理有些精确的问题时,用双精度的 double 可以解决问题

因为计算机是用二进制表示浮点数,这样在十进制是有限小数,在二进制中可能是无限小数,就像在十进制是1/3,而在三进制是0。1一样,所以在c中浮点数的比较需要一个范围,在这个范围以内就认为相等。