> 백엔드 개발 > C++ > C, C++ 및 Java의 부동 소수점 산술 및 결합성

C, C++ 및 Java의 부동 소수점 산술 및 결합성

王林
풀어 주다: 2023-08-28 09:09:11
앞으로
1247명이 탐색했습니다.

C, C++ 및 Java의 부동 소수점 산술 및 결합성

C, C++ 및 Java에서는 부동 소수점 숫자를 사용하여 일부 수학 연산을 수행합니다. 이제 부동 소수점 숫자가 결합 규칙을 따르는지 확인하겠습니다.

답은 '아니오'입니다. 어떤 경우에는 부동 소수점 숫자가 연관성 규칙을 따르지 않습니다. 여기에서 몇 가지 예를 살펴보겠습니다.

예제 코드

#include<iostream>
using namespace std;
main() {
   float x = -500000000;
   float y = 500000000;
   float z = 1;
   cout << "x + (y + z) is: " << x + (y + z) << endl;
   cout << "(x + y) + z is "<< (x + y) + z << endl;
}
로그인 후 복사

Output

x + (y + z) is: 0
(x + y) + z is 1
로그인 후 복사

여기서 결과가 동일하지 않다는 것을 알 수 있지만 이론적으로는 항상 1이라고 말할 수 있습니다. 이제 질문이 생깁니다. 이 작업은 어떻게 수행됩니까?

첫 번째 경우 x + (y + z), (500000000 + 1)이 실행 중입니다. 그러나 부동 소수점 숫자의 경우 반올림 후 다시 500000000으로 변환됩니다. 이제 -500000000을 추가하면 0이 됩니다. 두 번째 수식에서는 값이 (-500000000 + 500000000) = 0이 되고 1이 더해지므로 최종 결과는 결과는 1입니다.

정수를 사용하면 두 표현식 모두 동일한 결과인 1을 반환합니다.

위 내용은 C, C++ 및 Java의 부동 소수점 산술 및 결합성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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