Saturday, January 20, 2007
Java/자바] int long 나누기, 소수점 이하 구하기/출력 방법; Divide 정수 숫자
예를 들어, "100 나누기 3"을 할 때 "100 / 3" 이렇게 하면
33.333 이 나오지 않고, 그냥 33 이 나옵니다. 소수점 이하를 잃어버리게 됩니다.
소수점 이하까지 정확하게 구하려면,
정수를 실수화시키고 나누기를 한 후, 그 결과를 실수형 변수에 넣어야 합니다.
int 또는 long형 변수나 숫자는, 정수만 나타낼 수 있고, 소수점 이하는 표현할 수 없습니다.
소수점이 있는 실수 연산을 하려면, double 형의 변수를 사용해야 합니다.
파일명: Foo.java
(※ 스크롤 박스 사용법: 박스 안을 마우스로 클릭한 후, 키보드의 좌우 화살표키를 누르면 양옆으로 움직일 수 있습니다. 박스에서 다시 나오려면, 박스 바깥의 아무곳이나 클릭하면 됩니다.)
위의 예제 소스 컴파일 및 실행 결과 화면:
33.333 이 나오지 않고, 그냥 33 이 나옵니다. 소수점 이하를 잃어버리게 됩니다.
소수점 이하까지 정확하게 구하려면,
정수를 실수화시키고 나누기를 한 후, 그 결과를 실수형 변수에 넣어야 합니다.
int 또는 long형 변수나 숫자는, 정수만 나타낼 수 있고, 소수점 이하는 표현할 수 없습니다.
소수점이 있는 실수 연산을 하려면, double 형의 변수를 사용해야 합니다.
자바 기초: int 또는 long형 숫자 나누기 예제
파일명: Foo.java
(※ 스크롤 박스 사용법: 박스 안을 마우스로 클릭한 후, 키보드의 좌우 화살표키를 누르면 양옆으로 움직일 수 있습니다. 박스에서 다시 나오려면, 박스 바깥의 아무곳이나 클릭하면 됩니다.)
public class Foo {
public static void main(String[] args) {
int i; // 32비트 정수형 변수 선언
double d; // 64비트 실수형 변수 선언
// 틀린 결과 (소수점 이하 잃어버림)
i = 100 / 3;
System.out.println(i);
// 출력 결과: 33
// 틀린 결과 (소수점 이하 잃어버림)
d = 100 / 3;
System.out.println(d);
// 출력 결과: 33.0
// 옳은 결과
d = 100.0 / 3.0;
System.out.println(d);
// 출력 결과: 33.333333333333336
// 옳은 결과
d = 100.0 / 3;
System.out.println(d);
// 출력 결과: 33.333333333333336
// 수식에서, 어느 숫자든 하나만 실수형이면 결과가 실수형으로 나옴
// 뒤에 소수점과 0을 붙이면 실수형이 됨.
// 옳은 결과
d = 100 / (double) 3;
System.out.println(d);
// 출력 결과: 33.333333333333336
// (double) 을 사용하여, 정수형 리터럴을 실수형으로 만들어도 됨
// 틀린 결과 (소수점 이하 잃어버림)
i = (int) (100 / 3.0);
System.out.println(i);
/* 출력 결과: 33
위와 같이 수식을 소괄호로 둘러싼 후,
(int) 를 사용하여, 실수형 결과를 정수형으로 만들면
possible loss of precision (정밀도를 잃을 수 있음)
이라는 에러는 나지 않지만
역시 틀린 결과가 나옵니다.
*/
long temp = 3L; // 64비트 정수형 변수 선언
d = 100L / (double) temp;
System.out.println(d);
// 출력 결과: 33.333333333333336
// long형도 int형과 같습니다.
}
}
public static void main(String[] args) {
int i; // 32비트 정수형 변수 선언
double d; // 64비트 실수형 변수 선언
// 틀린 결과 (소수점 이하 잃어버림)
i = 100 / 3;
System.out.println(i);
// 출력 결과: 33
// 틀린 결과 (소수점 이하 잃어버림)
d = 100 / 3;
System.out.println(d);
// 출력 결과: 33.0
// 옳은 결과
d = 100.0 / 3.0;
System.out.println(d);
// 출력 결과: 33.333333333333336
// 옳은 결과
d = 100.0 / 3;
System.out.println(d);
// 출력 결과: 33.333333333333336
// 수식에서, 어느 숫자든 하나만 실수형이면 결과가 실수형으로 나옴
// 뒤에 소수점과 0을 붙이면 실수형이 됨.
// 옳은 결과
d = 100 / (double) 3;
System.out.println(d);
// 출력 결과: 33.333333333333336
// (double) 을 사용하여, 정수형 리터럴을 실수형으로 만들어도 됨
// 틀린 결과 (소수점 이하 잃어버림)
i = (int) (100 / 3.0);
System.out.println(i);
/* 출력 결과: 33
위와 같이 수식을 소괄호로 둘러싼 후,
(int) 를 사용하여, 실수형 결과를 정수형으로 만들면
possible loss of precision (정밀도를 잃을 수 있음)
이라는 에러는 나지 않지만
역시 틀린 결과가 나옵니다.
*/
long temp = 3L; // 64비트 정수형 변수 선언
d = 100L / (double) temp;
System.out.println(d);
// 출력 결과: 33.333333333333336
// long형도 int형과 같습니다.
}
}
위의 예제 소스 컴파일 및 실행 결과 화면:
D:\Z>javac Foo.java && java Foo
33
33.0
33.333333333333336
33.333333333333336
33.333333333333336
33
33.333333333333336
D:\Z>
33
33.0
33.333333333333336
33.333333333333336
33.333333333333336
33
33.333333333333336
D:\Z>
tag: java
자바 | Java 프로그래밍
크 잘봤습니다 설명도 잘 해두시고 감사합니다!
<< Home