Java

[Java]절대값 구하기

DevStory 2022. 6. 22.

이번 포스팅은 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
반응형

댓글