안녕하세요 저는 Java 프로그래밍에 익숙하지 않고 복식에 문제가 있습니다. 나는 4.6에서 .2를 빼는 대신 4.4를받는 대신 4.3999999999999995를 얻습니다. 십진수는 정확하게 바이너리로 표현 될 수는 없지만이 문제를 해결하는 방법은 무엇인지 알고 있습니다. 어떤 조언을 주시면 감사하겠습니다.Java double rounding
-1
A
답변
1
double
대신 BigDecimal
클래스를 사용하면이 부정확성을 얻을 수 없습니다. BigDecimal
을 만들 때이 값을 String
으로 전달하는 것이 가장 좋습니다. 따라서 아무런 반올림도 없습니다.
BigDecimal first = new BigDecimal("4.6");
BigDecimal second = new BigDecimal("0.2");
System.out.println(first.subtract(second));
1
당신은 BigDecimal
사용할 수 있습니다 또는
System.out.printf("%.2f%n", 4.6 - 0.2);
출력과 같은 형식의 출력을 사용할 수있는 것은 사용
4.40
또는이다 BigDecimal
BigDecimal bd = BigDecimal.valueOf(4.6);
System.out.println(bd.subtract(BigDecimal.valueOf(0.2)));
출력이
입니다32104.4
관련 문제
- 1. \ (Double) rounding
- 2. BigDecimal Rounding
- 3. parseFloat rounding
- 4. Paypal Rounding Algorithm
- 5. sqlite rounding 'error'
- 6. integer arithemetic rounding
- 7. Json.NET Decimal Parsing Rounding
- 8. Java : 다른 double 및 double 비교
- 9. Java FileOutputStream, 파일에 double double write
- 10. Java double double 및 double을 얻으십시오.
- 11. Java System.out.format double array
- 12. double 값의 Java 반복자
- 13. Java double casting (int [])
- 14. Java double URL Reader?
- 15. Java DecimalFormat double
- 16. Java Requesting Double
- 17. Java Nice 형식 Double
- 18. Java double in array
- 19. Java double entry table
- 20. java - 참조로 double 값 전달
- 21. Java Rest는 double 값을 전송합니다.
- 22. 문자열의 Java Double Array 오류
- 23. Java JApplet 그래픽 Double Buffering
- 24. Java BigDecimal/Double precision error
- 25. Java float 및 double diff
- 26. 수동으로 Java double 형식 지정
- 27. JAVA : double 배열에서 검색 값은
- 28. JSP Java double 표시 문제
- 29. Java double-checked locking solution?
- 30. Java - 프로그램이 getText (double)을 컴파일하지 못합니다/double
'double' 대신'BigDecimal' 클래스를 사용하는 법을 배웁니다. –
또는'DecimalFormat'을 사용하여 출력을 나타내거나 printf()를 사용하십시오. – EJP
빠른 수정을 위해서는'flood' 대신'System.out.println (4.6F - 0.2F);'를 사용하십시오. 더 나은 선택이기 때문에'BigDecimal'에 익숙해 져야합니다. – Tom