[ Math Class ]
- 생성자가 private으로 선언되어 있어 인스턴스 생성 불가
- 모든 필드와 메소드는 static
[ abs() ]
- 절대값 반환
- 반환 타입은 인자로 전달한 타입과 같음
package study.first;
public class Study {
public static void main(String[] args) {
double a = -12.5;
double b = Math.abs(a);
System.out.println(b); // 12.5
}
}
[ ceil() ]
- 소숫점 값이 있다면 올림값 반환
- double 타입 반환만 해주기 때문에 float변수에 담기 위해서는 형변환 필요
- argument는 자동으로 double 타입 반환
본래 float 타입 실수는 저장하기 전에 double(8byte) 타입으로 임시 저장했다가 실제 저장을 하게 됩니다. 그래서 다시 메모리의 실제 공간에 옮겨 담아줄 때 float타입(4byte)이라는 것을 알려주기 위해 "float a = 12.0f"와 같이 뒤에 f또는 F를 붙여줍니다. "float a = (float) 12.5"와 같이 형변환을 해주는 식으로 쓰는 것과 마찬가지입니다.
package study.first;
public class Study {
public static void main(String[] args) {
float a = 12.00001f;
double b = Math.ceil(a);
float c = (float) Math.ceil(a);
System.out.println(b); // 13.0
System.out.println(c); // 13.0
}
}
[ floor() ]
- 소숫점 값이 있다면 내림값 반환
- ceil() 과 동일하게 double 타입으로만 반환함
package study.first;
public class Study {
public static void main(String[] args) {
float a = 12.00001f;
double b = Math.floor(a);
float c = (float) Math.floor(a);
System.out.println(b); // 12.0
System.out.println(c); // 12.0
}
}
[ max() / min() ]
- 인수로 제공된 두 숫자의 최대, 최소값을 구함
- 비교하는 두 숫자의 타입이 같아야 함 (다르면 형변환 해서 제공해야 함)
- 제공한 타입으로 값을 반환
package study.first;
public class Study {
public static void main(String[] args) {
float a = 12.00001f;
int b = 12;
// int c = Math.max(a, b); // 에러
int d = 13;
int f = Math.max(b, d);
System.out.println(f); // 13
f = Math.min(b, d);
System.out.println(f); // 12
}
}
[ pow() ]
- 제곱수를 구함
- double 타입으로만 반환 (받아주는 변수 타입이 무조건 double이어야 함)
- argument는 자동으로 double 타입 변환되어 계산 됨
참고로 double 타입은 어떤 숫자라도 들어갈 수 있습니다. 반대는 아닙니다. 정수는 기준 없이 실수로 변경될 수 있지만 실수는 기준 없이 정수로 변경될 수 없습니다. 또한 8byte 타입이기 때문에 byte, short, int, float, long의 모든 타입이 담길 수 있습니다. 그래서 숫자를 double 타입에 넣을 때는 자동 형변환이 됩니다.
package study.first;
public class Study {
public static void main(String[] args) {
int a = 2;
int b = 3;
double c = Math.pow(a, b);
System.out.println(c); // 8
}
}
[ random() ]
- 0.0 이상 ~ 1.0 미만의 난수를 반환
- double 타입으로만 반환
package study.first;
public class Study {
public static void main(String[] args) {
double a = Math.random();
System.out.println(a);
a = Math.random();
System.out.println(a);
}
}
[ round() ]
- 소수점 첫째 자리를 반올림해줌
- 반환될 때 담을 변수에 맞게 자동 형변환 해줌
- 당연하게도 원본 숫자보다 더 작은 사이즈의 타입에 담으려고 하면 에러
package study.first;
public class Study {
public static void main(String[] args) {
float a = 1.5f;
int c = Math.round(a);
System.out.println(c); // 2
double d = Math.round(a);
System.out.println(d); // 2.0
float f = Math.round(a);
System.out.println(f); // 2.0
// short s = Math.round(a); // 에러
}
}
[ aqrt() ]
- 제곱근을 반환
- double 타입으로만 반환
참고로 String 클래스의 static 메소드인 String.format() 메소드를 이용하면 C언어의 printf() 형태로 출력문을 작성 가능합니다. 이 때 "%.숫자f"로 타입을 지정하면 숫자에 지정된 자릿수만큼만 반올림돼서 문자열 형태로 출력할 수 있습니다. 또는 round() 함수를 이용해서 아래와 같이 작업해줘도 됩니다.
package study.first;
public class Study {
public static void main(String[] args) {
int a = 5;
double b = Math.sqrt(a);
System.out.println(b); // 2.2360...
System.out.println(String.format("%.2f", b)); // 2.24
b = (double)((int) Math.round(b*100)) / 100;
System.out.println(b); // 2.24
}
}
'■ JAVA > Study' 카테고리의 다른 글
[JAVA] java.util.StringTokenizer 주요 메소드 [1/1] (0) | 2021.03.01 |
---|---|
[JAVA] java.lang.Enum (열거형) 주요 메소드 [1/1] (0) | 2021.02.28 |
[JAVA] java.lang.StringBuilder (문자열) 주요 메소드 [2/2] (0) | 2021.02.25 |
[JAVA] java.lang.StringBuilder (문자열) 주요 메소드 [1/2] (0) | 2021.02.25 |
[JAVA] java.lang.Object 주요 메소드 (0) | 2021.02.25 |