> Java > java지도 시간 > 본문

Java 이중 곱셈 결과의 작은 편차 문제에 대한 간략한 논의

高洛峰
풀어 주다: 2017-01-23 16:06:58
원래의
1616명이 탐색했습니다.

다음 코드 조각의 실행 결과를 살펴보세요.

public class TestDouble {
 
public static void main(String[] args) {
 
double d =538.8;
 
System.out.println(d*100);
 
}
로그인 후 복사

출력 결과는 놀랍게도 53880이 아니라 53879.99999999999

해결 방법 1:

538.8*100을 *10*10으로 바꾸면 원하는 결과를 얻을 수 있습니다.

538.8*10000을 100*100으로 바꿉니다.

해결책 2:

public class TestDouble {
  public static void main(String[] args) {
   double d =538.8;  
   BigDecimal a1 = new BigDecimal(Double.toString(d));
   BigDecimal b1 = new BigDecimal(Double.toString(100)); 
   BigDecimal result = a1.multiply(b1);// 相乘结果
   System.out.println(result);
   BigDecimal one = new BigDecimal("1");
   double a = result.divide(one,2,BigDecimal.ROUND_HALF_UP).doubleValue();//保留1位数
   System.out.println(a);
  }
}
로그인 후 복사

위 글에서는 편집자가 공유하는 모든 내용인 Java 이중 곱셈 결과의 작은 편차 문제에 대해 간략하게 설명합니다. 참고가 되었으면 좋겠습니다. 또한 모든 분들이 PHP 중국어 웹사이트를 지원해 주시길 바랍니다.

Java 이중 곱셈 결과의 작은 편차에 대한 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿