컴퓨터 엑셀 워드 포토숍 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Previous Post Java/자바] log2 (밑이 2인 로그 함수), log (ln), log10(상용 로그...C언어] log2 (밑이 2인 로그 함수), log (ln), log10(상용 로그) 구하...Perl/펄] log (ln), log10, log2, 상용 로그 함수, 밑이 10, 2인...Python/파이썬] log (ln), log10, log2, 로그 함수 [밑이 2인 로그...Perl/펄] 문자열/배열 양쪽 공백 제거, 정규식 사용; Trim Leading / Tr...Python/파이썬] 문자열 앞이나 끝의 공백만 제거; Remove Leading-Trai...C언어] 오늘 요일 이름 구하기, 요일명 출력; Get-Print DAY OF THE WE...Python/파이썬] 오늘 요일 이름 구하기, 요일명 출력; Get-Print DAY OF...Python/파이썬] 문자열 양쪽의 불필요한 공백 제거; Trim Trailing Spac...Python/파이썬] 정수 실수 자료형, 숫자 데이터형; int long float Num...

Java/자바] int long 나누기, 소수점 이하 구하기/출력 방법; Divide 정수 숫자

Saturday, January 20, 2007

예를 들어, "100 나누기 3"을 할 때 "100 / 3" 이렇게 하면

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형과 같습니다.


  }
}



위의 예제 소스 컴파일 및 실행 결과 화면:
D:\Z>javac Foo.java && java Foo
33
33.0
33.333333333333336
33.333333333333336
33.333333333333336
33
33.333333333333336

D:\Z>



자바 강좌와 각종 예제

1 Comments:
At 12:19 PM, Blogger 송민걸 said...

크 잘봤습니다 설명도 잘 해두시고 감사합니다!

 

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Categories
Previous Posts
Monthly Archives
Top