Strictfp
स्ट्रिक्टएफपी जावा प्रोग्रामिंग भाषा में एक अप्रचलित और अनावश्यक आरक्षित शब्द है। इससे पहले, इस मुख्य शब्द का उपयोग एक संशोधक के रूप में किया जाता था जो पोर्टेबिलिटी सुनिश्चित करने के लिए फ्लोटिंग-पॉइंट गणना को आई. ई. ई. ई. 754 शब्दार्थ तक सीमित करता था। स्ट्रिक्टएफपी मुख्य शब्द को जावा में जावा वर्चुअल मशीन (जेवीएम) संस्करण 1.2 के साथ पेश किया गया था और इसकी कार्यक्षमता को जेवीएम संस्करण 17 में हटा दिया गया था। जावा 17 तक, आई. ई. ई. ई. 754 शब्दार्थ की आवश्यकता है, इस प्रकार इस मुख्य शब्द का उपयोग करने से कोई प्रभाव नहीं पड़ता है। आई. ई. ई. ई. मानक आई. ई. ई. ई. 754 एकल (32-बिट, जावा के फ्लोट में उपयोग किया जाता है) या डबल (64-बिट, जावा के डबल में उपयोग किया जाता है) परिशुद्धता सहित विभिन्न प्रारूपों में फ्लोटिंग-पॉइंट गणना और फ्लोटिंग-पॉइंट मूल्यों के भंडारण दोनों के लिए एक मानक विधि निर्दिष्ट करता है। कुछ हार्डवेयर विस्तारित परिशुद्धता प्रारूप भी प्रदान करते हैं जो उच्च परिशुद्धता और/या एक बड़ी प्रतिपादक सीमा प्रदान करते हैं। इस तरह के आर्किटेक्चर पर इस तरह के विस्तारित प्रारूपों का उपयोग करके मध्यवर्ती परिणामों की गणना करना अधिक कुशल हो सकता है। यह राउंड-ऑफ त्रुटियों, ओवरफ्लो और अंडरफ्लो से बच सकता है जो अन्यथा हो सकते हैं, लेकिन ऐसे आर्किटेक्चर पर अलग-अलग आउटपुट का उत्पादन करने के लिए प्रोग्राम का कारण बन सकते हैं। पारंपरिक x87 फ्लोटिंग-पॉइंट वास्तुकला के साथ x86 मशीनों पर विस्तारित परिशुद्धता के उपयोग से बचना विशेष रूप से महंगा था। हालांकि गणना की सटीकता को नियंत्रित करना आसान था, मध्यवर्ती परिणामों के लिए घातांक सीमा को सीमित करने के लिए अतिरिक्त महंगे निर्देशों की आवश्यकता थी। जे. वी. एम. 1.2 से पहले, फ्लोटिंग-पॉइंट गणनाओं को सख्त होना आवश्यक था; यानी, सभी मध्यवर्ती फ्लोटिंग-पॉइंट परिणामों को ऐसा व्यवहार करने की आवश्यकता थी जैसे कि आई. ई. ई. ई. एकल या दोहरे परिशुद्धता का उपयोग करके दर्शाया गया हो। इसने सामान्य x87-आधारित हार्डवेयर पर इसे महंगा बना दिया ताकि यह सुनिश्चित किया जा सके कि जहां आवश्यकता होगी वहां अतिप्रवाह होगा। जे. वी. एम. 1.2 से शुरू करते हुए, मध्यवर्ती गणनाओं को, डिफ़ॉल्ट रूप से, आई. ई. ई. ई. 32 बिट और 64 बिट प्रारूपों से जुड़े मानक प्रतिपादक श्रेणियों को पार करने की अनुमति दी गई थी। इसके बजाय उन्हें "विस्तारित-घटक" मूल्य सेट के सदस्य के रूप में प्रतिनिधित्व करने की अनुमति दी गई थी। x87 जैसे प्लेटफार्मों पर, अतिप्रवाह और अधोप्रवाह अपेक्षित रूप से नहीं हो सकते हैं, जो संभवतः अधिक सार्थक, लेकिन कम दोहराने योग्य परिणाम देते हैं। चूँकि एस. एस. ई. 2 का समर्थन करने वाले x86 प्रोसेसरों पर x87 फ्लोटिंग पॉइंट की आवश्यकता नहीं है, जावा 17 ने फिर से सभी फ्लोटिंग-पॉइंट संचालन को सख्त बना दिया, जिससे प्रभावी रूप से pre-1.2 शब्दार्थ को बहाल किया गया। यह कैसे काम करता है अतिप्रवाह या अधोप्रवाह की अनुपस्थिति में, स्ट्रिक्टएफपी के साथ या उसके बिना परिणामों में कोई अंतर नहीं है। यदि पुनरावृत्ति आवश्यक है, तो स्ट्रिक्टएफपी संशोधक का उपयोग यह सुनिश्चित करने के लिए किया जा सकता है कि सभी प्लेटफार्मों पर एक ही स्थान पर अतिप्रवाह और अधोप्रवाह हो। स्ट्रिक्टएफपी संशोधक के बिना, मध्यवर्ती परिणाम एक बड़ी प्रतिपादक सीमा का उपयोग कर सकते हैं। स्ट्रिक्टएफपी संशोधक आई. ई. ई. ई. एकल परिशुद्धता और दोहरी परिशुद्धता मूल्यों के रूप में सभी मध्यवर्ती मूल्यों का प्रतिनिधित्व करके इसे पूरा करता है, जैसा कि जे. वी. एम. के पहले के संस्करणों में हुआ था। उपयोग प्रोग्रामर यह सुनिश्चित करने के लिए मॉडिफायर स्ट्रिक्टएफपी का उपयोग कर सकते हैं कि गणना पहले के संस्करणों की तरह ही की जाती है; अर्थात, केवल आई. ई. ई. ई. एकल और दोहरी परिशुद्धता प्रकारों का उपयोग किया जाता है। स्ट्रिक्टएफपी गारंटी का उपयोग करना कि फ्लोटिंग-पॉइंट गणना के परिणाम सभी प्लेटफार्मों पर समान हैं। इसका उपयोग कक्षाओं, इंटरफेस और गैर-अमूर्त विधियों पर किया जा सकता है। जब किसी विधि पर लागू किया जाता है, तो यह विधि के भीतर सभी गणनाओं को सख्त फ्लोटिंग-पॉइंट गणित का उपयोग करने का कारण बनता है। जब एक वर्ग पर लागू किया जाता है, तो वर्ग के अंदर सभी गणनाएँ सख्त फ्लोटिंग-पॉइंट गणित का उपयोग करती हैं। संकलन-समय स्थिर अभिव्यक्तियों को हमेशा सख्त फ्लोटिंग-पॉइंट व्यवहार का उपयोग करना चाहिए। उदाहरण सार्वजनिक स्ट्रिक्टएफपी वर्ग माईएफपी वर्ग {//. यहाँ वर्ग की सामग्री।} संदर्भ जावा (प्रोग्रामिंग भाषा)