मुझे दिलचस्पी है कि जावा आईईईई 754 मानक का उपयोग अपने फ्लोटिंग पॉइंट अंकगणितीय को लागू करने के लिए कर रहा है।
आईईईई-754 कई फ्लोटिंग प्वाइंट प्रकार के लिए मानकों को परिभाषित करता है। कई सालों तक, वे सभी बाइनरी फ़्लोटिंग पॉइंट थे; यही है कि जावा का float
और double
हैं: float
32-बिट आईईईई -754 बाइनरी फ़्लोटिंग पॉइंट मान (मानक कॉल binary32
) है। double
एक 64-बिट एक है (मानक कॉल binary64
)। इन बाइनरी फ्लोटिंग पॉइंट नंबर कंप्यूटर की गणना करने के लिए बहुत ही कुशल हैं, लेकिन क्योंकि वे बाइनरी में काम करते हैं और हम दशमलव में काम करते हैं, कुछ अपेक्षाएं विसंगतियां होती हैं; उदाहरण के लिए, 0.1
को double
में ठीक से संग्रहीत नहीं किया जा सकता है, और आपको जैसे 0.30000000000000004
होने की विषमताएं मिलती हैं। विवरण के लिए Is floating point math broken? देखें। उदाहरण के लिए, वे वित्तीय गणना के लिए एक अच्छी पसंद नहीं हैं।
BigDecimal
एक जावा वर्ग कि दशमलव फ्लोटिंग प्वाइंट को लागू करता है। यह double
का उपयोग करने से बहुत धीमा है, लेकिन परिणाम हमारे दशमलव-दिमागी उम्मीदों के साथ फिट होते हैं (उदाहरण के लिए, 0.1 + 0.2
0.3
होगा)।
आईईईई -754 का 2008 संस्करण विशेष रूप से decimal32
, decimal64
, और decimal128
में महत्वपूर्ण नए प्रारूप जोड़ता है। ये दशमलव फ़्लोटिंग पॉइंट हैं, और इसलिए वे वैसे ही काम करते हैं जो हम करते हैं। 0.1
को decimal64
में सटीक रूप से संग्रहीत किया जा सकता है। 0.1 + 0.2
decimal64
में है। हालांकि, जहां तक मैं कह सकता हूं, वे आपके प्रश्न के लिए वास्तव में प्रासंगिक नहीं हैं।
चूंकि BigDecimal
आईईईई -754 2008 (कुछ मार्जिन द्वारा) की भविष्यवाणी करता है, यह अपने स्वयं के अर्थशास्त्र को परिभाषित करता है।
और यदि मैथ क्लास में आईईईई 754 मानक का उपयोग करने का क्या मतलब है?
JDK9 Math
कि आईईईई-754 2008 कल्पना (fma
जैसे है, जो एक fused multiply-add करता है) द्वारा परिभाषित किया गया काम करने की नई संचालन कहते हैं, और इसलिए यह आईईईई-754 2008 कल्पना के संदर्भ में उन कार्यों को परिभाषित करता है, विस्तृत जानकारी के लिए।
अधिक पढ़ने:
स्रोत
2016-10-28 07:25:57
nitpick: प्रश्नकर्ता आईईईई 754-2008, जो, द्विआधारी फ्लोटिंग प्वाइंट प्रकार के अलावा, दशमलव floating- को परिभाषित करता है के बारे में पूछताछ बिंदु प्रकार 'दशमलव 64' और' दशमलव128' जो वास्तव में '0.1' का प्रतिनिधित्व करने में सक्षम हैं। – njuffa
@njuffa: अच्छा बिंदु, मुझे उस प्रश्न के उद्धृत बिट में याद आया। और अंधा लिंक जेडीके 9 चश्मा 2008 के मानक के बारे में बात कर रहे हैं। यह पूरी तरह से जवाब बदलता है। –
@njuffa: फिक्स्ड, और इसे इंगित करने के लिए फिर से धन्यवाद। –