码迷,mamicode.com
首页 > 编程语言 > 详细

Java之浮点数运算

时间:2019-10-25 16:16:56      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:范围   lan   运行   特点   abs   https   mat   计算机   浮点数   

  浮点数运算和整数运算相比,只能进行加减乘除这些数值运算,不能做位运算和移位运算。

  在计算机中,浮点数虽然表示的范围很大,但是浮点数有个非常重要的特点,就是浮点数常常无法精确表示

  举例

  浮点数0.1在计算机中就无法精确表示,因为十进制的0.1换算成二进制是一个无限循环小数,很显然,无论使用float还是double,都只能存储一个0.1的近似值。但是,0.5这个浮点数又可以精确地表示。因为浮点数常常无法精确表示,因此,浮点数运算会产生误差:

public class Main {
    public static void main(String[] args) {
     double x=1.0 / 10;
     double y=1-9.0 / 10;
     System.out.println(x);
     System.out.println(y);
    }
}

   运行结果

0.1
0.09999999999999998

   由于浮点数存在运算误差,所以比较两个浮点数是否相等常常会出现错误的结果。正确的比较方法是判断两个浮点数之差的绝对值是否小于一个很小的数:

public class Main {
    public static void main(String[] args) {
     double x=1.0 / 10;
     double y=1-9.0 / 10;
     System.out.println(x);
     System.out.println(y);
     double r=Math.abs(x-y);
     if(r<0.00001) {
    	 System.out.println("true");
     }
     else {
    	 System.out.println("false");
     }
    }
}

   浮点数在内存的表示方法和整数比更加复杂。Java的浮点数完全遵循IEEE-754标准,这也是绝大多数计算机平台都支持的浮点数标准表示方法。

Java之浮点数运算

标签:范围   lan   运行   特点   abs   https   mat   计算机   浮点数   

原文地址:https://www.cnblogs.com/minseo/p/11738475.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!