各种类型数字比较大小及等值比较

1.int及Integer类型、long及Long类型

情况1.两个值都是int类型,可以使用>,<,==来比较大小或等值比较;

情况2.一个是int类型,一个是Integer类型,java会做自动拆箱处理,实际就是两个int类型数值进行比较,可以使用>,<,==来比较大小或等值比较;

情况3.两个值都是Integer类型,等值比较使用equals()方法,大小比较建议使用compareTo(),如:

int result = a.compareTo(b),a==b时,result=0;a>b时,result=1,a<b时,result=-1;

(-128到127之间不会封装对象而是用常量池的值,不在这个范围才会创建对象,所以两个Integer类型等值比较时,不建议使用==);

总结:有int或long类型时,使用>,<,==比较,都是Integer类型或都是Long类型时,使用equals()和compareTo()方法比较;不是同一类型的数值要转成同一类型再做比较,同时要考虑类型转换时精度丢失的问题。

2.float及Float类型、double及Double类型

float类型:float的精度为6~7位有效数字,最多能有7位有效数字,但绝对能保证的为6位。

double类型:精度为15~16位有效数字,最多能有16位有效数字,但绝对能保证的为15位。

float c = 5200.3462f;
float d = 5200.3464f;
System.out.println("c==d:" + (c==d));

Float c1 = 5200.3467f;
Float d1 = 5200.3468f;
System.out.println("c1>d1:" + c1.compareTo(d1));
System.out.println("c1.equals(d1):" + c1.equals(d1));
System.out.println("d>c:" + (d>c));
//返回结果:c==d:true    c1>d1:0    c1.equals(d1):true    d>c:false

float、double比较大小时:会存在精度问题,当两个值的差值在精度之外时,>,<,==,equals,compareTo比较都会判断为两个值相等,>,<返回false,compareTo返回0,==,equals返回true;

总结:含float、double时采用>,<,==来比较,两个值均为Double或Float类型时,采用equals和compareTo来进行比较,但会存在精度问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值