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