sql >> Database >  >> RDS >> Sqlserver

SQL Server:Decimale precisie/schaal levert vreemde resultaten op

De documentatie is een beetje onvolledig wat betreft de magie van de waarde 6 en wanneer de max . moet worden toegepast functie, maar hier is een tabel met mijn bevindingen, gebaseerd op die documentatie.

Zoals het zegt, zijn de formules voor delen:

En, zoals u zelf aangeeft, hebben we dan de voetnoot:

Dus dit is wat ik in mijn spreadsheet heb gemaakt:

p1 s1 p2 s2 prInit srInit prOver prAdjusted srAdjusted
38 16 38 16 93     55     55     38         6
28 16 28 16 73     45     35     38         10
29 16 29 16 75     46     37     38         9

Dus ik gebruik pr en sr om de precisie en schaal van het resultaat aan te geven. De prInit en srInit formules zijn precies de forumlas uit de documentatie. Zoals we kunnen zien, is de precisie van het resultaat in alle 3 gevallen veel groter dan 38 en dus is de voetnoot van toepassing. prOver is gewoon max(0,prInit - 38) - met hoeveel we de precisie moeten aanpassen als de voetnoot van toepassing is. prAdjusted is gewoon prInit - prOver . We kunnen in alle drie de gevallen zien dat de uiteindelijke precisie van het resultaat 38 . is .

Als ik hetzelfde toepas aanpassingsfactor voor de schalen, dan zou ik resultaten krijgen van 0 , 10 en 9 . Maar we kunnen zien dat uw resultaat voor de (38,16) zaak heeft een schaal van 6 . Dus ik geloof dat dat is waar de max(6,... een deel van de documentatie daadwerkelijk van toepassing is. Dus mijn laatste formule voor srAdjusted is max(6,srInit-prOver) en nu mijn laatste Adjusted waarden lijken overeen te komen met uw resultaten.

En natuurlijk, als we de documentatie raadplegen voor decimal , kunnen we zien dat de standaard precisie en schaal, als u ze niet specificeert, zijn (18,0) , dus hier is de rij voor als je geen precisie en schaal hebt opgegeven:

p1 s1 p2 s2 prInit srInit prOver prAdjusted srAdjusted
18 0  18 0  37     19     0      37         19



  1. Jquery datepicker met Ajax werkt niet

  2. Resultaten van een Mysql-query exporteren naar Excel?

  3. cd:-M:ongeldige optie

  4. MySQL Ongeldige standaardwaarde voor tijdstempel als er geen standaardwaarde is opgegeven.