Java

[Java]제곱근 구하는 방법 - sqrt 메서드

DevStory 2022. 9. 5.

제곱근 구하는 방법

java.lang.Math 클래스에서 제공하는 sqrt() 메서드는 매개변수로 전달받은 숫자의 제곱근을 반환합니다.

public static double sqrt(double a);

sqrt() 메서드는 정적 메서드(static method)입니다. 따라서, Math 클래스의 객체를 생성하지 않고 sqrt() 메서드를 호출할 수 있습니다.


sqrt 메서드 사용 예시

다음 예제는 sqrt() 메서드 사용 방법입니다.

public static void main(String args[]) {
  int num = 25;
  double result = Math.sqrt(num);

  System.out.println("25의 제곱근: " + result);
  System.out.println("50의 제곱근: " + Math.sqrt(50));
}

[실행 결과]

25의 제곱근: 5.0
50의 제곱근: 7.0710678118654755

 

import static문을 사용하여 Math 클래스를 정적으로 가져오면, 클래스 이름을 명시하지 않고 sqrt() 메서드를 호출할 수 있습니다.

 

다음 예제는 import static문을 사용하여 Math 클래스를 정적으로 가져온 다음 sqrt() 메서드를 호출합니다.

import static java.lang.Math.*;

public class MainForm {
  public static void main(String args[]) {
    int num = 25;
    double result = sqrt(num);

    System.out.println("25의 제곱근: " + result);
    System.out.println("50의 제곱근: " + sqrt(50));
  }
}

[실행 결과]

25의 제곱근: 5.0
50의 제곱근: 7.0710678118654755

"import static java.lang.Math.*;"라는 소스 코드는 Math 클래스의 모든 정적 멤버를 가져옵니다. Math 클래스의 객체를 생성하지 않아도 정적 메서드와 정적 변수를 호출할 수 있습니다.

※ 자동 형변환
Java에는 자동으로 데이터 타입을 변환하는 자동 형변환이라는 개념이 존재합니다. sqrt() 메서드의 매개변수는 double 타입인데, 매개변수로 int 타입의 값을 전달해도 에러가 발생하지 않았습니다.

자동 형변환은 데이터 크기가 작은 타입을 데이터 크기가 큰 타입으로 변환하는 행위이며, int 타입은 double 타입보다 데이터 크기가 작으므로 자동 형변환이 가능합니다.

데이터 크기: byte(1) < shrot(2) < int(4) < long(8) < float(4) < double(8)

float 타입은 long 타입보다 데이터 크기가 작지만, 표현할 수 있는 숫자의 범위가 long 타입보다 크기 때문에 자동 형변환이 가능합니다.

sqrt 메서드 특징

  • 매개변수로 전달된 값이 NaN이거나 0보다 작은 경우 NaN을 반환합니다.
  • 매개변수로 전달된 값이 양의 무한대(POSITIVE_INFINITY)인 경우 반환 결과는 무한대(INFINITY)입니다.
  • 매개변수로 전달된 값이 음의 무한대(NEGATIVE_INFINITY)인 경우 반환 결과는 NaN입니다.
  • 매개변수로 전달된 값이 0인 경우 0을 반환합니다.
public static void main(String args[]) {
  System.out.println("0보다 작은 경우: " + sqrt(-10));
  System.out.println("NaN인 경우: " + sqrt(Double.NaN));

  System.out.println("양의 무한대인 경우: " + sqrt(Double.POSITIVE_INFINITY));
  System.out.println("음의 무한대인 경우: " + sqrt(Double.NEGATIVE_INFINITY));

  System.out.println("0인 경우: " + sqrt(0));
  System.out.println("0.000인 경우: " + sqrt(0.000));
}

[실행 결과]

0보다 작은 경우: NaN
NaN인 경우: NaN
양의 무한대인 경우: Infinity
음의 무한대인 경우: NaN
0인 경우: 0.0
0.000인 경우: 0.0
반응형

댓글