您的位置 首页 java

测试开发技能:java语言之浮点数运算

浮点数 运算和整数运算相比,只能进行加减乘除这些数值计算,不能做位运算和移位运算。浮点数有个非常重大的特点,就是无法准确 表示。

可以看一个例子

 public class Main {


public  static   void  main(String[] args) {
double x = 1.0 / 10;
double y = 1 - 9.0 / 10;
// 观察x和y是否相等:
System.out.println(x);
System.out.println(y);
}
}  

我们看下最后的结果

在判断的时候,我们可以做一些取舍,比如在一个合理的范围内可以认为二者相等。

 public class Main {


    public static void main(String[] args) {
        double x = 1.0 / 10;
        double y = 1 - 9.0 / 10;
        // 观察x和y是否相等:
        System.out.println(x);
        System.out.println(y);
        double r = Math.abs(x - y);
        // 再判断绝对值是否足够小:
        if (r < 0.00001) {
            System.out.println("可以认为相等");// 可以认为相等
        } else {
            System.out.println("不相等");// 不相等
        }
    }
}  

结果

测试开发技能:java语言之浮点数运算

浮点数在内存的表示方法和整数比更加复杂。

如果参与运算的两个数其中一个是 整型 ,那么整型可以自动提升到 浮点

 public class Main {


    public static void main(String[] args) {
        int n = 5;
        double d = 1.3 +35.0 / n; 
        System.out.println(d);
    }
}  

结果

需要特别注意,在一个复杂的 四则运算 中,两个整数的运算不会出现自动提升的情况。例如

 public class Main {


    public static void main(String[] args) {
        double d = 1.2 +26 / 5;
        System.out.println(d);
    }
}  

结果

测试开发技能:java语言之浮点数运算

整数运算在除数为 0 时会报错,而浮点数运算在除数为 0 时,不会报错,但会返回几个特殊值:

  • NaN 表示Not a Number
  • Infinity 表示无穷大
  • -Infinity 表示负无穷大

例如:

 public class Main {


    public static void main(String[] args) {
        double d=0.0/0;
       System.out.println(d);
        double m=1.0/0;
       System.out.println(m);
       double h=-1.0/0;
       System.out.println(h);
    }
}  

结果

在实际生活中很少遇到,了解下

在学习中,可以将浮点数强制转型为整数。

 public class Main {


    public static void main(String[] args) {
        int n1 = (int) 12.3;
        System.out.println(n1);
        int n2 = (int) 12.7;
        System.out.println(n2);
        int n4 = (int) -12.7;
        System.out.println(n4);
    }
}

  

看下最后的输出

文章来源:智云一二三科技

文章标题:测试开发技能:java语言之浮点数运算

文章地址:https://www.zhihuclub.com/182613.shtml

关于作者: 智云科技

热门文章

网站地图