Double和Float类型的max、min、isNaN、isFinite、isInfinite方法

本文以Double为例,Float是相同的
普通的浮点计算

System.out.println(5 / 2); //2
System.out.println(5.0 / 2); //2.5  浮点数和整数进行运算时,会将整数自动提升为浮点型

Double对POSITIVE_INFINITY 、NEGATIVE_INFINITY 、NaN 的定义:

public static final double POSITIVE_INFINITY = 1.0 / 0.0;
public static final double NEGATIVE_INFINITY = -1.0 / 0.0;
public static final double NaN = 0.0d / 0.0;

浮点数比较大小
浮点数计算建议使用BigDecimal,如果仅仅是比较大小,可以使用Double.min和Double.max方法

System.out.println(Double.max(1.3,1.3000000001)); //1.3000000001
System.out.println(Double.min(1.3,1.3000000001)); //1.3

System.out.println(0.7-0.6);  //0.09999999999999998
System.out.println(Double.min(0.7-0.6,0.1)); //0.09999999999999998
System.out.println(new BigDecimal(String.valueOf(0.7)).subtract(new BigDecimal(String.valueOf(0.6))));//0.1

NAN:not a number不是一个数字

Double num = Double.NaN;
System.out.println(0.0 / 0); //NAN:不是一个数
System.out.println(Double.NaN == Float.NaN);//false
System.out.println(Double.NaN == Double.NaN);//false
System.out.println(Double.isNaN(0.0 / 0));//true

INFINITY:无穷大
Double.isInfinite方法用于判断参数是否正无穷大或负无穷大。
Double.isFinite方法:用于判断参数是否是有限数字,如果参数是 NaN(非数字),或者是正、负无穷大的数,则返回 false。

System.out.println(1.0 / 0);//Infinity:正无穷大
System.out.println(1.0 / 0);//Infinity:正无穷大
System.out.println(1 / -0.0);//-Infinity:负无穷大
System.out.println(-1 / 0.0);//-Infinity:负无穷大

//整数0会自动提升浮点数,因此不会报空指针异常
System.out.println(Double.isInfinite(1.0/ 0));//结果为:true
System.out.println(Double.isInfinite(1 / -0.0));//结果为:true
System.out.println(Double.isFinite(1 / 0.0));//结果为:false
System.out.println(Double.isFinite(1 / -0.0));//结果为:false

注意:

System.out.println(Double.isNaN(Double.POSITIVE_INFINITY));//false
System.out.println(Double.isFinite(Double.NaN));//false
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值