一、Java中自帶的Math類提供了絕對值方法
Java的Math類中提供了abs()方法來獲取一個數的絕對值。Math類是Java中一個非常常用的類,提供了大量的數學運算方法,其中包括了絕對值的計算。
public static double abs(double a) // 返回參數a的絕對值
public static float abs(float a)
public static int abs(int a)
public static long abs(long a)
上述代碼中,abs()方法可以接收double、float、int、long四種類型的參數,並分別返回它們的絕對值。
二、使用三元運算符實現絕對值計算
Java中的三元運算符可以快速實現簡單的邏輯判斷,其格式為:
variable x = (expression) ? value if true : value if false
使用三元運算符判斷數值是否小於0,如果是則對其進行取反操作即可得到絕對值。
public static int abs(int x) {
return x < 0 ? -x : x;
}
public static double abs(double x) {
return x < 0 ? -x : x;
}
三、使用位運算符實現絕對值計算
使用 「按位取反再加1」的方式來對負數取絕對值。
public static int abs(int x) {
int y = x >> 31;
return (x ^ y) - y;
}
在上述代碼中,x >> 31負責獲取x的符號位,如果x為正數,則y為0;如果x為負數,則y為-1。
x ^ y的結果,如果x為正數,則與y異或結果為x;如果x為負數,則y為-1,其二進位表示為全1,所以x與y異或的結果為-x-1。
返回值需要減去y的值,因為如果x為正數,y為0,不減去y,則結果不變;如果x為負數,y為-1,減去y相當於將前面異或後的結果加1,才能得到正確的絕對值。
四、測試代碼
可以使用JUnit對代碼進行測試,確保得到的絕對值結果正確。
import org.junit.Assert;
import org.junit.Test;
public class AbsoluteTest {
@Test
public void testAbs() {
int a = -123;
int b = 456;
double c = -12.34;
double d = 56.78;
Assert.assertEquals(Math.abs(a), Absolute.abs(a));
Assert.assertEquals(Math.abs(b), Absolute.abs(b));
Assert.assertEquals(Math.abs(c), Absolute.abs(c), 0.0001);
Assert.assertEquals(Math.abs(d), Absolute.abs(d), 0.0001);
}
}
運行上述測試類,可以驗證代碼的正確性。
五、總結
Java中提供了多種方式來實現取絕對值的操作,其中Math類中的abs()方法可以滿足大部分需求,使用三元運算符可以實現簡單的絕對值計算,使用位運算符可以對負數進行絕對值計算。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/282733.html