Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL फ्लोटिंग पॉइंट जोड़ की गणित गणना कैसे करता है?

मुझे पता है कि 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));


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मेरे चालान डीबी संरचना को डिजाइन करने में मदद चाहिए

  2. mysql_connect ():ऐसी कोई फ़ाइल या निर्देशिका नहीं

  3. php / Mysql सर्वश्रेष्ठ वृक्ष संरचना

  4. MySQL:उप चयन के साथ अपेक्षित रूप से काम नहीं कर रहा है?

  5. डेटाबेस से कनेक्ट नहीं हो सकता (000webhost)