博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于Java中的除以零的研究
阅读量:2197 次
发布时间:2019-05-02

本文共 886 字,大约阅读时间需要 2 分钟。

前言

之前一直以为Java中如果出现被除数为0时,只会出现抛出ArithmeticException这个异常,但是有次无意中发现被除数为double时却不会抛出异常。于是就准备了一些测试用例研究一下。本人使用的JDK版本为1.8.0_162

用例

整数类型

被除数为byteshortintlong时,测试用例如下所示(只展示int的代码)

int a=1;	int b=0;	System.out.println(a/b);

运行结果为

java.lang.ArithmeticException: / by zero	...此处省略堆栈信息

浮点数类型

被除数为floatdouble时,测试用例如下所示(只展示double的代码)

double a=1;	double b=0;	System.out.println(a/b);

运行结果为

Infinity

Infinity是无限大的意思。

BigDecimal

被除数为BigDecimal时,测试用例如下

System.out.println(BigDecimal.ONE.divide(BigDecimal.ZERO));

运行结果为

java.lang.ArithmeticException: Division by zero	...此处省略堆栈信息

结论

通过一系列的测试可以得知,当运算中遇到除以0的情况时,基本类型中的整数类型和BigDecimal会直接抛出ArithmeticException。而基本类型中的浮点数类型时会返回Infinity

关于Infinity的拓展知识

  1. Infinity其实是个double类型的常量。
  2. Infinity并不是在rt.jar中定义的。而是nashorn.jar中的jdk.nashorn.internal.objects.Global中定义的常量。其定义的源码如下:public static final double Infinity = 1.0D / 0.0;
  3. 可以直接给double类型的变量赋值,如:double d=Infinity;

转载地址:http://nroub.baihongyu.com/

你可能感兴趣的文章
Shell 和Python的区别。
查看>>
Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结
查看>>
Loadrunner之https协议录制回放报错如何解决?(九)
查看>>
python中xrange和range的异同
查看>>
列表、元组、集合、字典
查看>>
【Python】easygui小甲鱼
查看>>
【Python】关于Python多线程的一篇文章转载
查看>>
【Pyton】【小甲鱼】文件
查看>>
【Pyton】【小甲鱼】永久存储:腌制一缸美味的泡菜
查看>>
【Pyton】【小甲鱼】异常处理:你不可能总是对的
查看>>
APP性能测试工具
查看>>
【Pyton】【小甲鱼】类和对象
查看>>
压力测试工具JMeter入门教程
查看>>
作为一名软件测试工程师,需要具备哪些能力
查看>>
【Pyton】【小甲鱼】类和对象:一些相关的BIF(内置函数)
查看>>
【Pyton】【小甲鱼】魔法方法
查看>>
单元测试需要具备的技能和4大阶段的学习
查看>>
【Loadrunner】【浙江移动项目手写代码】代码备份
查看>>
Python几种并发实现方案的性能比较
查看>>
[Jmeter]jmeter之脚本录制与回放,优化(windows下的jmeter)
查看>>