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

SQL सर्वर 2005 संख्यात्मक सटीक हानि

जिस तरह फ्लोट प्रकार का जोड़ गलत है, उसी तरह दशमलव प्रकारों का गुणन गलत हो सकता है (या अशुद्धि का कारण बन सकता है) यदि आप सटीकता से अधिक हैं। देखें डेटा प्रकार रूपांतरण और दशमलव और संख्यात्मक

चूंकि आपने NUMERIC(24,8) . को गुणा किया है और NUMERIC(24,8) , और SQL सर्वर केवल सामग्री के प्रकार की जाँच करेगा, यह संभवतः संभावित 16 गैर-दशमलव अंकों (24 - 8) को सहेजने का प्रयास करेगा जब यह सटीकता के सभी 48 अंकों को नहीं सहेज सकता (अधिकतम 38 है)। उनमें से दो को मिलाएं, आपको 32 गैर-दशमलव अंक मिलते हैं, जो आपको केवल 6 दशमलव अंक (38 - 32) के साथ छोड़ देता है।

इस प्रकार मूल क्वेरी

SELECT A, B, C, A + B * C
FROM ( SELECT CAST(0.12345678 AS NUMERIC(24,8)) AS A,
  CAST(0 AS NUMERIC(24,8)) AS B,
  CAST(500 AS NUMERIC(24,8)) AS C ) T

कम कर देता है

SELECT A, B, C, A + D
FROM ( SELECT CAST(0.12345678 AS NUMERIC(24,8)) AS A,
  CAST(0 AS NUMERIC(24,8)) AS B,
  CAST(500 AS NUMERIC(24,8)) AS C,
  CAST(0 AS NUMERIC(38,6)) AS D ) T

फिर से, NUMERIC(24,8) . के बीच और NUMERIC(38,6) , SQL सर्वर गैर-दशमलवों के संभावित 32 अंकों को सहेजने का प्रयास करेगा, इसलिए A + D कम कर देता है

SELECT CAST(0.12345678 AS NUMERIC(38,6))

जो आपको 0.123457 . देता है गोल करने के बाद।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर डेटाबेस को एक उदाहरण से दूसरे में कैसे कॉपी करें

  2. समस्या निवारण में मदद करें SqlException:कनेक्शन पर समयबाह्य समाप्त हो गया, एक गैर-लोड स्थिति में

  3. टी-एसक्यूएल संग्रहीत प्रक्रिया में SHA256

  4. SQL सर्वर 2008 से कनेक्ट नहीं हो सकता है?

  5. SQL सर्वर 2016 एंटरप्राइज़ संस्करण प्रदर्शन लाभ