为什么C语言中double形式不能比较?
1、double和float都是浮点类型数据,它们都存在误差,所以不能用来比较。double和float的区别是:float是单类型浮点数据占四个字节。double是双类型浮点数据占四个字节。
2、由于double浮点数的精度问题,所以在比较大小的时候,不能像int整数型那样,直接if(a==b),if(ab)。
3、如果某一变量是double类型或float类型,才需要你说的那样。因为double类型或float类型都是有精度的,其实都是取的近似值,所以有个误差。和一个很小的数比如0.00000001比较就是为了在这个误差范围内进行比较。
4、double类型数据存储的数据是不精确的存储,如0.1可能是0.0999999。。
5、c语言 int类型的可以和double类型的大小可以比较。
c语言浮点数和0比较
在C语言中比较浮点数和0时,我们需要注意浮点数的舍入误差问题。为了尽可能减少误差,我们应该避免使用==操作符来比较浮点数和0。
不是不能,而是不准。float是浮点数存的是近似值。当用来表示0的时候,有可能计算结果是0,但是由于精度问题,实际上 存储的是一个和0很接近的值。而== 只要不是完全相等,就回是假。于是用==判断float有可能出错。
float是浮点数 存的是近似值 当用来表示0的时候 有可能计算结果是0,但是由于精度问题,实际上 存储的是一个和0很接近的值 而== 只要不是完全相等 就回是假 于是 用==判断float有可能出错。
举个例子如double b = 0.123456可能是0.1234561的四舍五入后得到的结果。最后的0.0000001就表示误差范围了。doubel a;if ( a-0.0000001 && a 0.000001 )对。
浮点数是近似值。 一般用精度判断 比如 判断是否为0 可以用 if(fabs(y)1e-6)这样就可以认为是为0 了。直接==会不正确的。
浮点型,由于精度关系(FLOAT6位),最小分辨0.000001,当存储一个数时,只有六位是准确的,比如存储0,可能在内存中的值为0.0000001321。。
c语言,double类型数值比较为什么出错,如何比较两个double类型大小?_百…
1、double类型数据存储的数据是不精确的存储,如0.1可能是0.0999999。。
2、浮点类型不能比较相等或不等,但可以比较,=,=。用==从语法上说没错,但是本来应该相等的两个浮点数由于计算机内部表示的原因可能略有微小的误差,这时用==就会认为它们不等。
3、B.所以取整可能会出大问题,比如理想值为3,而实际值是999…,那么取整后会是2而不是3。C.但是,可以知道的是,实际值一定不会大于理想值,比如98实际是97999…,而不会是9900….。
4、所以,必须设立一个阈值,当某个double型数d-(int)d这个阈值时,才可以认为d要大于其向下取正的值。这个阈值一般应设置为小于1e-6的数。
C语言问题:比较两个浮点数大小
1、浮点类型不能比较相等或不等,但可以比较,=,=。用==从语法上说没错,但是本来应该相等的两个浮点数由于计算机内部表示的原因可能略有微小的误差,这时用==就会认为它们不等。
2、由于在内存中存放方式的限制,用相等运算符==比较两个浮点数是否相等是错误的。但一定要比较的话,想要很精确不行,可以强制类型转换为int型再比较。实在要精确到小数点后几位的话可以将这个数乘以10 的倍数再强制转换。
3、由于double浮点数的精度问题,所以在比较大小的时候,不能像int整数型那样,直接if(a==b),if(ab)。
4、是2的指数形式来表示小数。因此一个小数用浮点数来表示,肯定是有误差的。