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

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

王林
王林앞으로
2023-08-28 09:09:111182검색

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으로 문의하시기 바랍니다. 삭제