Einzelnen Beitrag anzeigen

Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#23

AW: MS SQL Genauigkeit in der Termauswertung

  Alt 13. Jun 2019, 08:38
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 )
Der Weg ist das Ziel aber man sollte auf dem Weg niemals das Ziel aus den Augen verlieren.

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