java - Scala addition of double gives different answer -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 11 जवाब

मैं वित्तीय ऐप की कोशिश कर रहा हूं , जहां क्रेडिट का योग और डेबिट 0 है

ऐसा क्यों है

  scala & gt; 7595.00-8544.38 + 949.38 रिज 7: डबल = 7.958078640513122 ई-13  

लेकिन सॉर्ट किया गया और जोड़ा गया

  scala & gt; 7595.00 + 949.38-8544.38 res8: डबल = 0.0  

अच्छी तरह से समस्या संख्या यादृच्छिक पर होती है लेकिन वे हमेशा शून्य

मैंने नोड के साथ ऐसा ही किया और समान परिणाम मिला। क्या समस्या है।

मैंने यह फ़ंक्शन लिखा है

  def sum (xs: सूची [डबल]): डबल = {xs match {case x :: tail = & gt; बिगडीकैमल (एक्स + योग (पूंछ))। सेटस्केले (2, बिगडीसीमल। राउंडिंगमॉड.एचएचडी_यूपी) .टा डबल केस नील = & gt; 0}}  

यह अजीब है, हालांकि ..

फ़्लोटिंग पॉइंट संख्याएं अंतर्निहित मानों का सही प्रतिनिधित्व नहीं हैं। यह सिर्फ एक तथ्य है कि कैसे चल बिन्दु संख्या बाइनरी में एन्कोडेड हैं।

अधिक जानकारी के लिए, देखें।

यदि आप सटीकता चाहते हैं, तो इसका प्रयोग करें:

  स्कला & gt; बिगडीक्यूमल (75 9 5,2) - बिगडीस्केल (854438,2) + बिगडीकैमल (9 4 9 38,2) रेस 1: स्कला.माथ.बिगडेकिलल = 0.00  

Comments