से दशमलव मान पढ़ने पर ओवरफ़्लो अपवाद मुझे आश्चर्य है कि यह एक बग है या यदि मैं कुछ गलत कर रहा हूं।SQL सर्वर
मैं SQL Server 2008 डेटाबेस से SqlDataReader
के साथ मान लोड कर रहा हूं लेकिन कुछ परिस्थितियों में, यह SQL मानों को .net मानों में परिवर्तित करने में विफल रहता है। (.NET 4,0)
मैं इसे एक परीक्षण मामले में जो वास्तविक समस्या को दर्शाता है करने के लिए नीचे का पता लगाया है:
कार्य उदाहरण:
"select convert(decimal(38, 19), 260000) as test"
rs.GetValue(1);
--> returns 260000 (decimal)
काम नहीं कर उदाहरण के:
"select convert(decimal(36, 26), 260000) as test"
rs.GetValue(1);
--> throws
System.OverflowException: Conversion overflows.
at System.Data.SqlClient.SqlBuffer.get_Decimal()
at System.Data.SqlClient.SqlBuffer.get_Value()
at System.Data.SqlClient.SqlDataReader.GetValueInternal(Int32 i)
at System.Data.SqlClient.SqlDataReader.GetValues(Object[] values)
मैंने वास्तविक मानों की जांच की है जो SQL सर्वर को सुरक्षित किया गया है। वे अलग है कि गैर काम काम कर रहे एक के बाद एक 4 पूर्णांकों का उपयोग करता है मूल्य व्यक्त करने के लिए, केवल 3.
मैं भी जो अनावरण किया कि एक अपवाद है, तो मूल्य अधिक की मौजूद फेंक दिया जाता है .net परावर्तक साथ स्रोत कोड की जांच की थी फिर 3 मान, लेकिन मैं उनके पीछे यांत्रिकी को समझ नहीं पा रहा हूं।
तो, मुझे आश्चर्य है कि यह .NET ढांचे में एक वास्तविक बग है या नहीं।
दशमलव मानों के लिए प्रेसिजन केवल 28 तक है। कृपया लिंक के माध्यम से जाएं http://stackoverflow.com/questions/745270/c-sharp-sizeof-decimal – praveen
लेकिन कामकाजी उदाहरण भी उच्च परिशुद्धता का उपयोग करता है। – Chuck