这个判断适合很多语言,
首先要明白一点:对于数字而言,放在程序里,整数占用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了,