天天看点

如何判断int、double、float类型数据为0或判断一个未知数据类型的为0或相等

这个判断适合很多语言,

首先要明白一点:对于数字而言,放在程序里,整数占用4或者8个字节,小数则占用8个字节

字面量整数的类型是int,比如:10的数据类型是:int,所以:int a = 10 编译器才不会报错

字面量小数的类型是double和float(目测C语言对这个分得不是太清楚,搞得我也很糊涂),比如:1.0的数据类型是:double,所以:int a = 1.0 (在java中 float f = 1.0编译器都会报错)

那么对于不知道的两个数的数据类型怎么比较他们相等呢?

比如:a 和 b;

如果两个数相等,那么他们的差 sub 为0

那怎么判断他们的差为0呢,我们不能这么写:

if (a-b==0){}

因为上面说过,0是一个整数,

不能用一个整型数来和浮点数做大小比较,需要把他们转换为同类型比较,float f= 0.1f 强转为int型就是0,但能说f==0吗?显然不能

如果一个数是float f = 0.0000009 那么f == 0,就成立了,但0.00000009 != 0;

所以如何判断一个未知数据类型的数为0:

只要这个数小于参考数据类型的最小正值、且大于最大负值,(sub < 最小正值  &&  sub>最大负值 )  那么这个数就为0了。

比如 参考数据类型是int型,int型数的最大负数是:-1,最小正数是:+1,只要  (sub >-1 && sub<+1),那么这个数就为0了

参考数据类型是:floa或double:最大负数是:-0.000001 最小正数:+0.000001         只要(sub > -0.000001 && sub < +0.000001),那么这个数就是0了,