이번 포스팅은 Java에서 절대값을 구하는 방법을 소개합니다.
abs() 메서드
java의 Math 클래스는 절대값을 구하는 abs() 메서드를 제공합니다. abs() 메서드는 아래의 오버로드된 형식으로 사용할 수 있습니다.
public static double abs(double a);
public static float abs(float a);
public static long abs(long a);
public static int abs(int a);
abs() 메서드는 숫자의 절대값을 반환하므로 인수가 음수가 아닌 경우 인수 그대로 반환됩니다.
abs() 메서드 예제 1.
다음 예제는 double, float, long, int 타입 변수의 절대값을 구합니다.
public class Main {
public static void main(String args[]) {
int numInt = -50;
long numLong = -1000;
float numFloat = -123.456f;
double numDouble = -123.456;
System.out.println("abs(" + numInt + "): " + abs(numInt));
System.out.println("abs(" + numLong + "): " + abs(numLong));
System.out.println("abs(" + numFloat + "): " + abs(numFloat));
System.out.println("abs(" + numDouble + "): " + abs(numDouble));
}
}
실행 결과
abs(-50): 50
abs(-1000): 1000
abs(-123.456): 123.456
abs(-123.456): 123.456
abs() 메서드 예제 2. int와 long
Integer.MIN_VALUE의 값을 가지는 int 타입의 변수를 abs() 메서드에 전달하면 음수가 반환됩니다.
Long.MIN_VALUE의 값을 가지는 long 타입의 변수를 abs() 메서드에 전달하면 음수가 반환됩니다.
다음 예제는 Integer.MIN_VALUE와 Long.MIN_VALUE를 abs() 메서드에 전달합니다.
public class Main {
public static void main(String args[]) {
int numIntMin = Integer.MIN_VALUE;
long numLongMin = Long.MIN_VALUE;
System.out.println("numIntMin: " + numIntMin);
System.out.println("abs(" + numIntMin + "): " + abs(numIntMin));
System.out.println("numLongMin: " + numLongMin);
System.out.println("abs(" + numLongMin + "): " + abs(numLongMin));
}
}
실행 결과
numIntMin: -2147483648
abs(-2147483648): -2147483648
numLongMin: -9223372036854775808
abs(-9223372036854775808): -9223372036854775808
음수가 반환되는 이유는 절대값이 값을 표현할 수 있는 범위를 벗어났기 때문입니다.
int 타입이 표현할 수 있는 값의 범위
-2,147,483,648 ~ 2,147,483,647
long 타입이 표현할 수 있는 값의 범위
-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
abs() 메서드 예제 3. float와 double
인수가 양수 0 또는 음수 0이면 abs() 메서드는 양수 0을 반환합니다.
인수가 음수 무한대인 경우 abs() 메서드는 양의 무한대를 반환합니다.
인수가 NaN인 경우 abs() 메서드는 NaN을 반환합니다.
다음 예제를 통해 알아봅시다.
public class Main {
public static void main(String args[]) {
float numFloat1 = -0f;
float numFloat2 = Float.NEGATIVE_INFINITY;
float numFloat3 = Float.NaN;
double numDouble1 = -0;
double numDouble2 = Double.NEGATIVE_INFINITY;
double numDouble3 = Double.NaN;
System.out.println( "abs(" + numFloat1 + ") : " + abs(numFloat1));
System.out.println( "abs(" + numFloat2 + ") : " + abs(numFloat2));
System.out.println( "abs(" + numFloat3 + ") : " + abs(numFloat3) + "\n" );
System.out.println( "abs(" + numDouble1 + ") : " + abs(numDouble1));
System.out.println( "abs(" + numDouble2 + ") : " + abs(numDouble2));
System.out.println( "abs(" + numDouble3 + ") : " + abs(numDouble3));
}
}
실행 결과
abs(-0.0) : 0.0
abs(-Infinity) : Infinity
abs(NaN) : NaN
abs(0.0) : 0.0
abs(-Infinity) : Infinity
abs(NaN) : NaN
반응형
'Java' 카테고리의 다른 글
[Java]중첩 인터페이스 및 내부 인터페이스(Nested Interface and Inner Interface) (0) | 2022.06.27 |
---|---|
[Java]오토박싱과 언박싱(Autoboxing and Unboxing) (0) | 2022.06.22 |
[Java]익명 내부 클래스와 람다식의 차이점 (0) | 2022.06.21 |
[Java]익명 클래스(Anonymous Class) (0) | 2022.06.21 |
[Java]중첩 클래스 및 내부 클래스(Nested Class and Inner Class) (0) | 2022.06.21 |
댓글