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

22 篇文章 0 订阅
11 篇文章 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了,

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值