Search

Math 클래스

Math 클래스

수학 계산에 유용한 메소드들로 구성
Math 클래스의 생성자접근 제어자private, 다른 클래스에서 Math 인스턴스 생성 불가
클래스 내에 인스턴스 변수가 하나도 없어서 인스턴스를 생성할 필요가 X
클래스 내 메소드는 모두 static
이 외엔 두 개의 상수만 존재
public static final double E = 2.7182818284590452354; // 자연로그의 밑 public static final double PI = 3.14159265358979323846; // 원주율
Java

올림, 버림, 반올림

소수점 n번쨰 자리에서 반올림한 값을 얻기 위해선 round() 사용
항상 소수점 첫째자리에서 반올림을 해서 정수값(long)을 반환
원하는 자리 수에서 반올림한 값을 얻기 위해선
10의 n제곱으로 곱한 후 다시 곱한 수로 나눠주면 됨.
// 원래 값에 100을 곱한다. 90.7552 * 100 -> 9075.52 // 위 결과에 Math.round() 사용 Math.round(9075.52) -> 9076 // 위 결과를 다시 100.0으로 나눔 9076 / 100.0 -> 90.76 // 100으로 나누면 9076 / 100 -> 90
Java
버림은 단순히 10의 n제곱을 곱한 후, 10의 n제곱.0으로 나누기
MathEx1.java

예외를 발생시키는 메소드

메소드 이름에 Exact가 포함된 메소드 (JDK 1.8부터 추가)
정수형 간의 연산에서 발생할 수 있는 오버플로우를 감지하고 예외를 발생시킴.
int addExact(int x, int y) // x + y int subtractExact(int x, int y) // x - y int multiplyExact(int x, int y) // x * y int incrementExact(int a) // a++ int decrementExact(int a) // a-- int negateExact(int a) // -a int toIntExact(long value) // (int)value - int로의 형변환
Java
MathEx2.java

삼각함수와 지수, 로그

MathEx3.java

StrictMath 클래스

Math 클래스는 OS의 메소드를 호출해서 사용하는데, OS마다 반올림 처리법과 같은 설정들이 조금씩 다를 수 있음. → 이런 차이를 해소하기 위해 성능을 포기, 항상 같은 결과를 얻는 StrictMath 클래스 사용

Math 클래스의 메소드

static double abs(double a) static float abs(float f) static int abs(int f) static long abs(long f) : 주어진 값의 절대값 반환
int i = Math.abs(-10); // i = 10 double d = Math.abs(-10.0) // d = 10.0
Java
static double ceil(double a) : 주어진 값을 올림하여 반환
double d = Math.ceil(10.1); // d = 11.0 double d2 = Math.ceil(-10.1); // d = -10.0 double d3 = Math.ceil(10.000015); // d3 = 11.0
Java
static double floor(double a) : 주어진 값을 버림하여 반환
double d = Math.floor(10.8); // d = 10.0 double d2 = Math.floor(-10.8); // d = -11.0
Java
static double max(double a, double b)
static float max(float a, float b)
static int max(int a, int b)
static long max(long a, long b) : 주어진 두 값을 비교하여 큰 쪽을 반환
double d = Math.max(9.5, 9.50001); // d = 9.50001 int i = Math.max(0, -1); // i = 0
Java
static double min(double a, double b)
static float min(float a, float b)
static int min(int a, int b)
static long min(long a, long b) : 주어진 두 값을 비교하여 작은 쪽을 반환
double d = Math.max(9.5, 9.50001); // d = 9.5 int i = Math.max(0, -1); // i = -1
Java
static double rondom() : 0.0~1.0 범위의 임의의 double값 반환 (1.0은 범위에 포함 x)
double d = Math.random(); // 0.0<=d<1.0 int i = (int)(Math.random() * 10) + 1; // 1<=i<1
Java
static double rint(double a) : 주어진 double 값과 가장 가까운 정수값을 double형으로 반환 단, 두 정수의 정가운데 있는 값은 짝수를 반환
double d = Math.rint(1.2); // d = 1.0 double d2 = Math.rint(2.6); // d2 = 3.0 double d3 = Math.rint(3.5); // d3 = 4.0 double d4 = Math.rint(4.5); // d4 = 4.0
Java
static long round(double a) static long round(float a) : 소숫점 첫쨰 자리에서 반올림한 정수값(long) 반환 매개변수의 값이 음수인 경우, round()와 rint()의 결과가 다름.
double l = Math.round(1.2); // l = 1 double l2 = Math.round(2.6); // l2 = 3 double l3 = Math.round(3.5); // l3 = 4 double l4 = Math.round(4.5); // l4 = 5 double d = 90.7552; // d = 90.7552 double d2 = Math.round(d*100)/100.0; // d2 = 90.76
Java

참고 자료