0.1 * (0.5 / 100 * 12) = 0.00
0.1 * (0.50 / 100 * 12) = 0.006 (?)
Also, das ist jetzt ein bissl off-topic, aber zurück zu dem, was der MS-
SQL wirklich ausgibt:
0.1 * (0.5 / 100 * 12) = 0.006
0.1 * (12 / 100 * 0.5) = 0.0
(0.5 / 100 * 12) = 0.06
(12 / 100 * 0.5) = 0.0
(12.0 / 100 * 0.5) = 0.06
(12 / 100.0 * 0.5) = 0.06
Wie gesagt: die Genauigkeit einer Operation wird durch die Genauigkeit ihrer Operanden definiert. Daher ergibt 12/100 IMMER(!) 0, egal wo im Term es steht.
Jetzt weiß ich es.
Falsch, denn sobald du mit 0 Multiplizierst ist das Ergebnis IMMER 0, aber du beweist ja auch:
(12.0 / 100 * 0.5) = 0.06 //Wäre 12.0 / 100 = 0, wäre das Ergebnis auch 0!
(12 / 100.0 * 0.5) = 0.06 //Wäre 12 / 100.0 = 0, wäre das Ergebnis auch 0!
Somit musst du die erforderliche Anzahl der Kommastellen in der Rechnung angeben, damit nicht abgeschnitten wird!
Ergo fehlt bei der Rechnung (12 / 100 * 0.5) = 0.0 nur eine Kommastelle und hätte drei mögliche Varianten um das richtige Ergebnis zu erhalten:
- (12.0 / 100 * 0.5) müsste = 0.06
- (12 / 100.0 * 0.5) müsste = 0.06
- (12 / 100 * 0.50) müsste = 0.06
Edit wegen Schokohases Post: Wenn die Reihenfolge scheinbar bei MS
SQL einen Unterschied in der Rechnung bzw. im Ergebnis macht, sollte man sich ggf. nochmal mit der Rechnungslogik in MS
SQL befassen, denn hier scheint es doch noch mehr Besonderheiten zu geben worauf zu achten ist. (Danke für den Link
)