इसे अनुमानित परिशुद्धता . के रूप में जाना जाता है . यह कोई त्रुटि नहीं है, फ़्लोटिंग पॉइंट
डेटा प्रकार इस तरह से काम करने के लिए अभिप्रेत हैं। वे डेटा को ठीक से स्टोर नहीं कर सकते। इसलिए यदि यह मायने रखता है, तो आपको निश्चित-बिंदु डेटा प्रकारों का उपयोग करना चाहिए, जैसे कि DECIMAL
MySQL में।
दूसरी ओर, आप फ्लोटिंग पॉइंट की तुलना के लिए हमेशा सटीक डेल्टा का उपयोग कर सकते हैं, जैसे:
SELECT
`foo`,
`bar`,
IF(ABS(`foo`-`bar`)<1E-13, 0, `foo`-`bar`) AS zero_compared
FROM
t
जैसा कि आप देख सकते हैं, यहाँ डेल्टा 1E-13
. है (आम तौर पर, यह काफी होगा)