Einzelnen Beitrag anzeigen

Schokohase
(Gast)

n/a Beiträge
 
#20

AW: MS SQL Genauigkeit in der Termauswertung

  Alt 13. Jun 2019, 08:22
Nur damit wir alle auf dem gleichen Stand sind
SQL-Code:
select 1,12/100*0.5
union
select 2,0.5/100*12
union
select 3,0.1*(12/100*0.5)
union
select 4,0.1*(0.5/100*12)
union
select 5,0.1*12/100*0.5
union
select 6,0.1*0.5/100*12
ergibt auf dem MS SQL 2017 ausgeführt
Code:
1 - 0
2 - 0.06
3 - 0
4 - 0.006
5 - 0.006
6 - 0.006
Beispiel auf SQLfiddle

Warum also jetzt der Unterschied zwischen Zeile 3 und Zeile 5?

Ganz einfach:

Es wird in Zeile 3 erst der Wert in den Klammern berechnet, und der ergibt (wie man in Zeile 1 sehen kann) eben 0 und diese 0 mit 0.1 multipliziert ergibt weiterhin 0.

Das ist das ganze Geheimnis

PS
Der wirkliche Problemauslöser ist die Division von zwei Ganzzahlen 12/100. Es würde reichen eine davon als Fließkommazahl zu deklarieren. Also 12/100.0 oder 12.0/100.

Geändert von Schokohase (13. Jun 2019 um 08:29 Uhr)
  Mit Zitat antworten Zitat