Java 프로그래밍, Math 클래스
Math 클래스에는 삼각함수, 로그 등 수학 계산에 필요한 40여개의 static 메소드와 2개의 상수가 포함되어 있다
Math 클래스에 포함된 2개의 상수
- Math.E : 자연대수 (2.71828...)
- Math.PI : 원주율 (3.141592...)
Math클래스의 몇가지 메소드 테스트
public class MathDemo { public static void main(String[] args) { // 자연로그 double val = Math.log(2.71828); System.out.printf("자연로그 ln(2.71828)=%f %n", val); // 상용로그 val = Math.log10(100); System.out.printf("상용로그 log10(100)=%f %n", val); // 제곱 val = Math.pow(2, 3); // a의 b승 System.out.printf("2의 3승=%f %n", val); // 제곱근 val = Math.sqrt(25); // 제곱근 System.out.printf("25의 제곱근=%f %n", val); // 자연대수를 밑으로 하는 지수승 val = Math.exp(1); System.out.printf("자연대수를 밑으로 하는 지수승=%f %n", val); // 0.0 ~ 1.0 사이의 임의의 수 추출(1.0 비포함) val = Math.random(); System.out.printf("Math.random()=%f %n", val); // 반올림 val = Math.round(12.345); System.out.printf("반올림=%f %n", val); } }
호도법(Radian)
각도를 수로 표현하는 2가지 방법이 있는데 육십분법(일반각)과 호도법(Radian)이 있다. 육십분법은 한바퀴 회전한 각을 360도로 나타내는 방법이며 일반적으로 자주 사용되기 때문에 사람들에게 직관적으로 인식되는 장점이 있다. 그러나 공학에서는 큰 각을 다룰 때 일반각을 사용하면 직관성이 떨어지고 숫자가 커지므로 좋은 방법은 못된다. 그래서 공학에서는 호도법이 자주 사용되는데, 호도법은 원의 반지름에 해당하는 원호가 원의 중심과 이루는 각을 1[rad]으로 정하고 있다.
반지름에 해당하는 원호의 길이가 1라디안이라면, 원주 전체는 몇 라디안일까?
삼각함수 사용 예
public class MathDemo { public static void main(String[] args) { // sin30도의 값은 1/2 인데, 이렇게 하면 다른 값이 나온다 double val = Math.sin(30); System.out.printf("sin(30)=%f %n", val); // sin(30)=-0.988032 // 자바의 삼각함수 메소드는 일반각이 아닌 라디안으로 간주하기 때문이다 // 일반각(60분법) 30도를 라디안 단위로 변환하여 다시 sin()메소드를 호출한다 double rad = Math.toRadians(30); val = Math.sin(rad); System.out.printf("sin(30)=%f %n", val); // sin(30)=0.500000 // 180[deg] = PI[rad]이므로 이 공식을 이용하여 일반각을 라디안으로 변환해도 된다 // 1[deg] = PI/180 [rad] rad = 30*Math.PI/180; // 30[deg]를 라디안으로 변환 val = Math.sin(rad); System.out.printf("sin(30)=%f %n", val); // sin(30)=0.500000 } }