Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

빰_s

[Java] 소숫점 자릿수만큼 출력하는 방법 본문

Java

[Java] 소숫점 자릿수만큼 출력하는 방법

Job_E 2024. 1. 1. 23:55

 

  1. 개요
  • 1/3 = 0.3333333333333... 이 숫자를 소숫점 2번째 자릿수까지만 출력하고 싶다.(1/3 => 0.33)
    어떻게 해야 할까?
  1. 방법의 종류
  • . System.out.printf();
    • 가장 간단한 방법이지만, 리턴 값으로써 사용할 수가 없다.
    • // a = 1, b = 2, c = 3 System.out.printf(".2f",a/b); // 출력 : 0.33 System.out.printf(".2f",b/c); // 출력 : 0.67 (반올림 처리됨)
  • Math.ceil(), floor(), round()
    • Ceil() : 올림
    • Floor() : 버림
    • Round() : 반올림
    • 위 3가지 Math 함수를 활용하여도 소수를 자를 수 있다. 다만, 위 함수는 소수 첫째 자릿수에서 올리는 위 함수만으로는 소수를 표현하지 못하고 응용이 필요하다.
    • 반올림을 통해 0.666666...을 0.67로 표현하고자 할 때, 다음과 같은 방법을 사용한다.
      • 위 사례의 경우, round 말고 ceil을 사용해도 같은 결과가 나온다.
      • 하지만 floor은 버림이기 때문에 0.66이 나온다는 점에 주의가 필요하다.
    • // a : 2, b : 3 System.out.println(Math.round((a/b)*100)/100); System.out.println(Math.ceil((a/b)*100)/100); System.out.println(Math.floor((a/b)*100)/100); /* a * b = 0.666666.. a*b*100 = 66.6666... 위 수를 소수 첫째자리 수에서 반올림하면 67 이를 100 나누면 0.67 결괏값 0.67 0.67 0.66 (※ 버리기 때문에 0.66) */
  • String,format()
    • String.format()를 활용하면 소숫점 뿐 아니라 실수형, 주솟값 등 다양한 형태로써의 표현이 가능하다.
    • 다만, 해당 함수를 활용하여 값을 가져올 경우 자동 반올림이 되기 때문에 주의가 필요하다.
    • // a : 2, b : 3 System.out.println(Math.round((a/b)*100)/100); System.out.println(Math.ceil((a/b)*100)/100); System.out.println(Math.floor((a/b)*100)/100); System.out.println(String.format("%.2f",a/b)); /* 결괏값 0.67 < round 0.67 < ceil 0.66 < floor 0.67 < String.format() */
    • 파라미터 문법은 printf와 똑같으며, 이를 리턴 값으로써 사용할 수 있다는 점에서 차이가 있다.
Comments