黑马程序员技术交流社区

标题: double类型的0能够做除数? [打印本页]

作者: dzr19850306    时间: 2013-2-14 08:24
标题: double类型的0能够做除数?
刚刚测试了下,整数的时候会抛出异常,但是定义为双精度浮点型的时候则能够顺利通过。
作者: 张洪慊    时间: 2013-2-14 09:51
class Test
{
        public static void main(String[] args)
        {
                double i=0,j=1;
                System.out.println(j/i);//infinity(无穷,无限大) 个人理解把0.0当成一个极小的数
        }
}
可以再参照下 http://bbs.csdn.net/topics/270031545
作者: 袭喜悦    时间: 2013-2-14 10:42

在JAVA中有三个特殊的浮点类型的数值:正无穷大、负无穷大、NaN

这三种数值用来表示出错或者溢出的情况。

举个例子,用一个正数去除0得到的是正无穷大,而计算负数的平方根会得到NaN
0可以做除数,得到的是一个分正负的无穷大;当两个数的绝对值均为0.0时候,商等于NaN。当0.0/x,x不等0.0时候,得到的一个带符号位0.0:
作者: 陈科宇    时间: 2013-2-14 12:16
朋友,其实没什么奇怪的。我们double,float都是浮点型。运算时会丢失精度。我给你换成BigDecimal你就知道了:
                double d1=5.0;
                double d2=0.0;
                BigDecimal bd1=new BigDecimal(d1);
                BigDecimal bd2=new BigDecimal(d2);
                System.out.println(bd1.divide(bd2));
       现在你再运算,就不会那么幸运了。至于BigDecimal的知识,就需要你自己去查阅了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2