1. 程式人生 > >java中除法和取餘的若干注意

java中除法和取餘的若干注意

1 整數除法中,除數為0,丟擲一個算術異常ArithmeticException。整數取餘運算中,除數為0,丟擲一個ArithmeticException異常。
 如:
 class Test
 {
  public static void main(String args[])
  {
   System.out.println(3/0);
   System.out.println(3%0);
  }
 }

2 小數除法中,除數為0,輸出一個Infinity常量。小數取餘運算中,除數為0,丟擲一個NaN常量。浮點數有無限值和Nan(非數值)概念。
 如: 
 class Test
 {
  public static void main(String args[])
  {
   System.out.println(3.0/0);
   System.out.println(3.0%0);
  }
 }

3 NaN是java語言中特有的數,由Float 和 Double兩個封裝類提供,且不能把它作為一個普通數用於運算中,如==運算,NaN用於比較運算中,不會顯示錯誤,但都只輸出false。因此NaN只是通過呼叫isNaN()方法來判定是否一個東西是否數值;但在equals()方法中比較的是內容,就看具體資料了。
 如: 
 class Test
 {
  public static void main(String args[])
  {
   double x = 64.0;
   double y = 0.0;
  
   System.out.println(x%y == x%y);
  }
 }
顯示:false

如:
 Double a = new Double(Double.NaN);
 Double b = new Double(Double.NaN);
 
 if(Double.NaN == Double.NaN)
  System.out.println("True");
 else
  System.out.println("False");

 if(a.equals(b))
  System.out.println("True");
 else
  System.out.println("False");
顯示:false,true


  而Infinity(極限數)即可進行比較,POSITIVE_INFINITY(正無窮)和NEGATIE_INFINITY(負無窮),可用於比較邏輯運算中。
 如:
 class Test
 {
  public stativ void main(String args[])
  {
   System.out.println(Float.NaN == Float.NaN);
   System.out.println(Float.POSITIVE_INFINITY == Float.POSITIVE_INFINITY)
  }
 }
顯示:false,true

3 在取餘操作中,餘數的正負符號完全取決於左運算元,和作運算元的正負號一致。
 如:
 class Test
 {
  public static void main(String args[])
  {
   byte x = -64;
   byte y = -6;
   
   System.out.println(x/y + " " + x%y);

   x = 64;
   System.out.println(x/y + " " + x%y);
  }
 }
顯示:10,-4  -10 4

4 小數取餘,用左邊的運算元連續減去右邊的運算元,直到結果小於右邊的運算元,此結果為餘。即對商截去小數位後的運算。
 如:
 class Test
 {
  public static void main(String args[])
  {
   double x = 64.5;
   double y = 6.0;
   
   System.out.println(x/y + " " + x%y);
  }
 }
顯示:10.75,4.5