Java基础 一些奇奇怪怪的现象

1.double 类型 不能使用==判断
Java中double类型比较大小或相等的方法
正确写法:

	double dis=1e-6;
	if(Math.abs(d1-d2)<dis){
	 //允许一定的误差范围
	}
  1. int 越界
int n=-2147483648;
System.out.println(-n);
System.out.println(Math.abs(n));
System.out.println(Integer.MIN_VALUE);

输出:

-2147483648
-2147483648
-2147483648

原因:
当 n = -2147483648时执行 n = -n会因越界而赋值出错
解决:使用long类型
3.double精度

double y=300000.00000000000;
double y1=300000.000000000003;
System.out.println(y1==y);

输出:

true

这就是double的精度问题。当小数点后位数 大于(17-6)11位时,jvm就会忽略这个精度,这时的y=300000.00000000000。所以jvm就会判定y==300000.
转自:https://www.cnblogs.com/westward/p/5332785.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值