Java浮点数小记

除了表示普通的数字之外, float 和 double 类型还能表示四个特殊的值:正无穷大、负无穷大、零和 NaN。如果浮点数运算的结果超出了 float 或 double 能表示的范围上限,得到的是无穷大。如果浮点数的运算结果超出了 float 或 double 能表示的范围下限,得到的是零。
Java 的浮点类型区分正零和负零,具体是哪个值取决于从哪个方向出现的下溢。在实际使用中,正零和负零的表现基本一样。最后一种特殊的浮点数 NaN,是“Not-a-Number”的简称,表示“不是数字”。如果浮点数运算不合法,例如 0.0/0.0,得到的就是 NaN。
以下几个例子得到的结果就是这些特殊的值:

double inf = 1.0/0.0; // 无穷大
double neginf = -1.0/0.0; // 负无穷大
double negzero = -1.0/inf; // 负零
double NaN = 0.0/0.0; // NaN

Java 浮点数类型能处理到无穷大的上溢以及到零的下溢,因此浮点数运算从不抛出异常,就算执行非法运算也没事,例如零除以零,或计算负数的平方根。
float 和 double 基本类型都有对应的类,分别为 Float 和 Double。这两个类都定义了一些有用的常量: MIN_VALUE、 MAX_VALUE、NEGATIVE_INFINITY、 POSITIVE_INFINITY 和 NaN。
无穷大浮点数的表现和设想的一样,例如,无穷大之间的加减运算得到的还是无穷大。负零的表现几乎和正零一样,而且事实上,相等运算符 == 会告诉你,负零和正零是相等的。区分负零、正零和普通的零有一种方法——把它作为被除数: 1.0/0.0 得到的是正无穷大,但是 1.0 除以负零得到的是负无穷大。因为 NaN 不是数字,所以 ==运算符会告诉我们它不等于任何其他数字,甚至包括它自己。若想检查某个 float 或double 值是否为 NaN,必须使用 Float.isNaN() 或 Double.isNaN() 方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值