关于浮点数据的算术运算

先看一下程序:

public class Test{
public static void main(String args[]){
System.out.println(4.0f - 2.9f);
System.out.println(1234f/0);
System.out.println(-5678f/0);
System.out.println(1234f%0);
System.out.println(-5678f%0);
System.out.println(0.0/0);
System.out.println(0.0%0);
}
}

运行结果如下:
1.0999999
Infinity
-Infinity
NaN
NaN
NaN
NaN
为什么会出现这样的结果呢?
4.0f - 2.9f 不是等于1.1吗?除法运算与取余运算除以0时不是会出现异常吗?
原因如下:
(1)浮点运算的结果会与实际的数值有一定的误差。因为浮点数据在进行运算时,计算机算出的是小数点后的n位,与实际的数值会有一定的误会,它只能尽量的接近实际值。
float型数据4.0减去浮点数据2.9的结果,数学计算结果是1.1,但计算机计算出的结果只能尽量地去接近1.1。
(2)在浮点数据的算术运算时,如果进行一个浮点型数据/0或%0的运算时,运行时并不会出错。因为:在Java语言中定义了三个特殊的浮点值来表示浮点数/0或%0的运算时的各种出错情形:
☆ Infinity:正无穷大 (正浮点数/0)
☆ –Infinity:负无穷大 (负浮点数/0)
☆ NaN:Not a Number (0.0/0或0.0%或正负浮点数%0或负数开平方根)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值