您的位置:首页 > 编程语言 > Java开发

Java中Double类型的运算精度

2017-03-15 16:41 369 查看
这个问题的来源是《剑指Offer》这本书的第85页中提出的一个问题:

如何比较两个 Double 类型的数的大小?

看到这个问题,大家肯定会想到使用
==
啊!

那么如果你也是这么想的,就请接着看下面的这个小程序吧!

package question;

/**
* @author 白芷
* @time 2017/03/15
* @function Double 类型的精度问题
* */
public class Question10 {

public static void compareDouble(Double num1,Double num2){
if(num1==num2){
System.out.println("相等");
}else{
System.out.println("不相等");
}
}

public static void main(String[] args) throws Exception {
Double num1,num2;

num1=0.05+0.01;
num2=0.06;
compareDouble(num1,num2);

num1=1.0-0.36;
num2=0.64;
compareDouble(num1,num2);

num1=1.235*100;
num2=123.5;
compareDouble(num1,num2);

num1=123.4/100;
num2=1.234;
compareDouble(num1,num2);
}
}


在 eclipse 上面的运行结果如何呢?相信你们肯定会大吃一惊。输出结果如下:

不相等

不相等

不相等

不相等

那么这是为什么呢?这就涉及到Double类型的精度问题了!有兴趣的可以参看一下这篇博客:http://blog.csdn.net/smcwwh/article/details/7080878

那么我们应该怎样去比较两个浮点数呢?

方法就是下面这个啦:

public static void compareDouble
4000
(Double num1,Double num2){
if(Math.abs(num1-num2)<0.00000001){
System.out.println("相等");
}else{
System.out.println("不相等");
}
}


后面有关浮点数在计算机中的存储部分,以后再加补充!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: