मैं बस एक समान स्थिति में आया था और SSMS v17.9.1 / SQL 2017 के भीतर प्रस्तुत 'बहुत बड़ी संख्या' के गोलमोल मुद्दों पर हैरान था।
मैं सुझाव नहीं दे रहा हूं कि मेरे पास एक समाधान है, हालांकि मैंने देखा है कि FORMAT एक संख्या प्रस्तुत करता है जो सही प्रतीत होता है। मैं इसका अर्थ यह नहीं लगा सकता कि यह आगे के मुद्दों को कम करता है या एक जटिल गणितीय कार्य के भीतर उपयोगी है।
टी एसक्यूएल कोड की आपूर्ति करती थी चाहिए , जबकि दूसरों को सक्षम करने के लिए अपने कोड का परीक्षण करने और विचारों उठता आवश्यकता चाहिए स्पष्ट रूप से मेरे टिप्पणियों का प्रदर्शन।
WITH Units AS
(
SELECT 1.0 AS [RaisedPower] , 'Ten' As UnitDescription
UNION ALL
SELECT 2.0 AS [RaisedPower] , 'Hundred' As UnitDescription
UNION ALL
SELECT 3.0 AS [RaisedPower] , 'Thousand' As UnitDescription
UNION ALL
SELECT 6.0 AS [RaisedPower] , 'Million' As UnitDescription
UNION ALL
SELECT 9.0 AS [RaisedPower] , 'Billion' As UnitDescription
UNION ALL
SELECT 12.0 AS [RaisedPower] , 'Trillion' As UnitDescription
UNION ALL
SELECT 15.0 AS [RaisedPower] , 'Quadrillion' As UnitDescription
UNION ALL
SELECT 18.0 AS [RaisedPower] , 'Quintillion' As UnitDescription
UNION ALL
SELECT 21.0 AS [RaisedPower] , 'Sextillion' As UnitDescription
UNION ALL
SELECT 24.0 AS [RaisedPower] , 'Septillion' As UnitDescription
UNION ALL
SELECT 27.0 AS [RaisedPower] , 'Octillion' As UnitDescription
UNION ALL
SELECT 30.0 AS [RaisedPower] , 'Nonillion' As UnitDescription
UNION ALL
SELECT 33.0 AS [RaisedPower] , 'Decillion' As UnitDescription
)
SELECT UnitDescription
, POWER( CAST(10.0 AS FLOAT(53)) , [RaisedPower] ) AS ReturnsFloat
, CAST( POWER( CAST(10.0 AS FLOAT(53)) , [RaisedPower] ) AS NUMERIC (38,0) ) AS RoundingIssues
, STR( CAST( POWER( CAST(10.0 AS FLOAT(53)) , [RaisedPower] ) AS NUMERIC (38,0) ) , CAST([RaisedPower] AS INT) + 2, 0) AS LessRoundingIssues
, FORMAT( POWER( CAST(10.0 AS FLOAT(53)) , [RaisedPower] ) , '0') AS NicelyFormatted
FROM Units
ORDER BY [RaisedPower]
cast(float_field as varchar(max))
अन्यथा मुझे सवाल नहीं है