क्या कोई यहां कृपया मुझे यह समझने में सहायता कर सकता है कि फ़्लोटिंग पॉइंट सीमाएं आपकी गणनाओं में त्रुटियों का कारण बनती हैं। उदाहरण के लिए निम्नलिखित कोड।फ़्लोटिंग पॉइंट समस्याओं को समझना
CalculateTotalTax = function (TaxRate, TaxFreePrice) {
return ((parseFloat(TaxFreePrice)/100) * parseFloat(TaxRate)).toFixed(4);
};
मैं इस विधि के लिए गलत परिणाम के कारण होने वाले किसी भी दो मूल्यों को इनपुट करने में असमर्थ रहा हूं। अगर मैं फिक्स्ड (4) को हटा देता हूं तो मैं देख सकता हूं कि गणना सटीकता खोने के लिए कहां शुरू होती है (कहीं 6 वें दशमलव स्थान के आसपास)। ऐसा कहकर कि, फ्लोट की मेरी समझ यह है कि यहां तक कि छोटी संख्याएं कभी-कभी प्रतिनिधित्व करने में असफल हो सकती हैं या मैंने गलत समझा है और 4 दशमलव स्थान (उदाहरण के लिए) हमेशा सटीक रूप से प्रदर्शित किया जा सकता है।
MSDN such के रूप में तैरता बताते हैं ...
इसका मतलब यह है कि वे किसी भी मात्रा कि प्रपत्र क/ (2^n के एक द्विआधारी अंश (नहीं है की एक सटीक प्रतिनिधित्व धारण नहीं कर सकता) जहां के और एन पूर्णांक हैं)
अब मुझे लगता है कि यह सभी फ्लोट्स पर लागू होता है (जावास्क्रिप्ट में उपयोग किए गए लोगों को शामिल करना)।
मूल रूप से मेरा प्रश्न इस पर उबाल जाता है। कोई यह कैसे निर्धारित कर सकता है कि फ़्लोटिंग पॉइंट ऑपरेशंस में त्रुटियों के लिए कोई विशिष्ट विधि कमजोर होगी, उन त्रुटियों को किस प्रकार सटीक किया जाएगा और उन त्रुटियों को उत्पन्न करने के लिए किन इनपुटों की आवश्यकता होगी?
उम्मीद है कि मैं जो पूछ रहा हूं वह समझ में आता है।
शायद यह इस विषय से संबंधित है: http://en.wikipedia.org/wiki/Machine_epsilon –
* टोनी द टट्टू *, जिसे [जॉन स्कीट] भी कहा जाता है (http://stackoverflow.com/users/22656/जॉन-स्कीट), एक [उत्कृष्ट स्पष्टीकरण] है (http://codeblog.jonskeet.uk/2009/11/02/omg-ponies-aka-humanity-epic-fail/)। परेशान किए बिना पढ़ने योग्य, स्पष्ट, हास्यास्पद, और [कुछ लिंक] के रूप में भारी नहीं (http://docs.sun.com/source/806-3568/ncg_goldberg.html) जिन्हें अक्सर इस विषय पर पोस्ट किया जाता है। – MarkJ