다음 코드 조각의 실행 결과를 살펴보세요.
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 중국어 웹사이트를 주목하세요!