Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C, C++ और Java में फ्लोटिंग पॉइंट ऑपरेशन और साहचर्यता

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 है।

  1. - C++ ऑपरेटर्स प्रीसिडेंस और असोसिएटिविटी के साथ

    ऑपरेटर प्रीसिडेंस एक अभिव्यक्ति में पदों के समूह को निर्धारित करता है। एक ऑपरेटर की असोसिएटिविटी एक गुण है जो निर्धारित करता है कि समान प्रीसिडेंस के ऑपरेटर्स को पैरेंथेसिस की अनुपस्थिति में कैसे समूहित किया जाता है। यह प्रभावित करता है कि एक अभिव्यक्ति का मूल्यांकन कैसे किया जाता है। कुछ ऑपरेटर्स

  1. - Java 8 में इंटरमीडिएट और टर्मिनल ऑपरेशन के बीच अंतर

    परिचयस्ट्रीम को Java 8 में पेश किया गया है, इसका उपयोग केवल डेटा के समूह को प्रोसेस करने के लिए किया जाता है, तत्वों को स्टोर करने के लिए नहीं। यह वास्तविक कलेक्शन को संशोधित नहीं करता, वे केवल पाइपलाइन्ड मेथड्स के अनुसार परिणाम प्रदान करते हैं।स्ट्रीम API कई ऑपरेशन्स का समर्थन करता है और ऑपरेशन्स क

  1. - पायथन में डेसीमल फिक्स्ड पॉइंट और फ्लोटिंग पॉइंट अंकगणित (decimal मॉड्यूल)

    फ्लोटिंग पॉइंट नंबर्स को मेमोरी में बेस 2 बाइनरी फ्रैक्शन के रूप में दर्शाया जाता है। नतीजतन, फ्लोटिंग पॉइंट अंकगणित ऑपरेशन्स कभी-कभी अजीब हो सकते हैं। 0.1 और 0.2 का जोड़ कष्टप्रद परिणाम दे सकता है: >>> 0.1 + 0.2 0.30000000000000004 वास्तव में यह बाइनरी फ्लोटिंग पॉइंट रिप्रेजेंटेशन की प्रक