▸JAVA/라이브러리(API)

java.lang.Math (수학계산) 주요 메소드 [1/1]

코데방 2019. 12. 10.
728x90

[ 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
	}
}

 

728x90

댓글

💲 추천 글