Java中double相减为什么会出现不精确的现象?
高洛峰
高洛峰 2017-04-17 17:46:37
0
5
832

double s = 5.3;
double s1 = 4.2;
System.out.println(s-s1);
输出1.0999999999999996

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

모든 응답(5)
阿神

Java의 기본 데이터 유형 중 float 및 double 유형의 핵심은 부동 소수점 숫자입니다. 부동 소수점 숫자는 정확한 데이터를 저장할 수 없습니다. 이 경우 부동 소수점 숫자를 계산할 때 계산 결과가 정확하지 않습니다.

그래서 자바에서는 BigDecimal이라는 클래스를 제공하는데, 정확한 데이터 연산(예: 금액)이 필요한 경우 이 클래스를 사용하면 나라를 구할 수 있습니다...

부동 소수점 숫자의 기본 구현 및 원리와 관련하여 计算机原理과 같은 과정에서 자주 논의되며 관련 정보를 직접 찾을 수 있습니다...

迷茫

부동 소수점 수의 정확한 계산을 위해 Java에서 BigDecimal 사용

巴扎黑

초대해주셔서 감사합니다! 정밀도가 떨어지는 이유는 설명할 수 없지만 해결 방법은 알고 있습니다. 계산하기 전에 double 및 기타 유형을 String으로 변환한 다음 java.math.BigDecimal에 넣어 계산하는 것이 좋습니다. math.BigDecimal에는 add() 및 pide()와 같은 자체 작업 메서드가 제공됩니다. . 잠깐, BigDecimal 객체는 계산 후에 반환되고 doubleValue(), intValue() 및 기타 메서드를 사용하여 기본 데이터 유형으로 변환됩니다.

迷茫

초대해주셔서 감사합니다. 해당 질문은 https://zm8.sm-tc.cn/?src=http%3A%2F%2Fz...

伊谢尔伦

컴퓨터 연산은 이진수이기 때문이죠.

십진수 0.1을 이진수로 변환하는 것은 무한히 반복되는 십진수이므로 잘려야 합니다.

십진수 통화의 덧셈과 뺄셈에는 BigDecimal 유형(일부 언어에서는 Decimal이라고도 함)을 사용하여 잘림 오류를 방지할 수 있습니다.

MATLAB처럼 숫자 클래스를 직접 정의할 수도 있습니다.

오류와 오류는 서로 다른 것입니다. 결국 차이점은 대부분의 경우 중요하지 않습니다.

예: 배정밀도 부동 소수점 숫자를 사용하여 지구의 둘레를 계산합니다. 잘림 오류는 0.000001mm 정도입니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿