C, C++ और Java में हम फ्लोटिंग पॉइंट संख्याओं के साथ कुछ गणितीय ऑपरेशन करते हैं। अब यहां हम जांचेंगे कि क्या फ्लोटिंग पॉइंट संख्याएं साहचर्यता नियम का पालन करती हैं या नहीं।
उत्तर है नहीं। फ्लोटिंग पॉइंट संख्याएं कुछ मामलों में साहचर्यता नियमों का पालन नहीं करती हैं। यहां हम कुछ उदाहरण देखेंगे।
उदाहरण कोड
#include <iostream>
using namespace std;
int main() {
float x = -500000000;
float y = 500000000;
float z = 1;
cout << "x + (y + z) है: " << x + (y + z) << endl;
cout << "(x + y) + z है " << (x + y) + z << endl;
}
आउटपुट
x + (y + z) है: 0 (x + y) + z है 1
यहां हम देख सकते हैं कि परिणाम समान नहीं हैं, लेकिन सैद्धांतिक रूप से हम कह सकते हैं कि वे हमेशा 1 होंगे। अब सवाल आता है कि यह कैसे होता है?
पहले मामले में x + (y + z), (500000000 + 1) किया जा रहा है। लेकिन फ्लोटिंग पॉइंट राउंड ऑफ के लिए, यह फिर से 500000000 में बदल जाता है। अब इसमें -500000000 जोड़ने पर यह 0 बन जाता है। दूसरे एक्सप्रेशन में, मान (-500000000 + 500000000) = 0 होता है, फिर 1 जोड़ने पर अंतिम परिणाम 1 होता है।
यदि हम पूर्णांकों का उपयोग करते हैं, तो दोनों एक्सप्रेशन समान परिणाम देंगे जो 1 है।