मुझे पता है कि SQL 92 पुराना मानक है, लेकिन मुझे पूरा यकीन है कि यह नए SQL मानक संस्करणों में नहीं बदला गया है।
SQL 92 परिभाषित करता है
सवाल यह है:0.1
और 0.2
क्वेरी में SELECT 0.1 + 0.2
एक अनुमानित या यह सटीक है?
जवाब है:आप नहीं जानते कि डेटाबेस भी नहीं जान सकता।
तो डेटाबेस MySQL और MariaDB इंजनों के लिए परिभाषित कार्यान्वयन को चलाएगा, इस सीम को DECIMAL(1,1)
के रूप में हैंडल किया जाएगा। डेटाटाइप
निक का उत्तर तालिका परिभाषा के साथ सही मान या अपेक्षित मान क्यों लौटाता है
SQL 92 भी
. को परिभाषित करता हैतालिका में डेटाटाइप को परिभाषित करके निक ने क्या किया है।
इस उत्तर को संपादित किया क्योंकि मुझे आज MySQL के मैनुअल में कुछ मिला है।
क्वेरी
SELECT (0.1 + 0.2) = 0.3
1
. में परिणाम MySQL में जिसका अर्थ है कि MySQL सटीक संख्यात्मक गणना का उपयोग करता है और का उपयोग करता है। सटीक गणित
जहाँ संभव हो। तो MySQL को पता है कि 0.1
, 0.2
और 0.3
यहां सटीक डेटाटाइप हैं और सटीक गणना करने की आवश्यकता है, जैसे मैं इस संपादन से पहले उम्मीद कर रहा था।
मतलब क्वेरी
SELECT (0.1 + 0.2) = 0.3
. की तरह कमोबेश हुड के नीचे चलेगा
SELECT CAST((0.1 + 0.2) AS DECIMAL(1, 1)) = CAST((0.3) AS DECIMAL(1, 1));