![]() |
AW: MS SQL Genauigkeit in der Termauswertung
Zitat:
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. :thumb: |
AW: MS SQL Genauigkeit in der Termauswertung
Zitat:
SQL-Code:
ergibt 0.06.
select 0.5*12/100
![]() Aber jetzt solltest du wissen sehen, warum |
AW: MS SQL Genauigkeit in der Termauswertung
Zitat:
(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:
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 :) ) |
AW: MS SQL Genauigkeit in der Termauswertung
@schokohase: Ja, stimmt, ich hab´s ungenau formuliert, es kommt ja auf die Reihenfolge der Auswertung an. In deinem Beispiel wird 12/100 ja gar nicht ausgewertet.
|
AW: MS SQL Genauigkeit in der Termauswertung
Zitat:
|
AW: MS SQL Genauigkeit in der Termauswertung
Zitat:
Du meinst sicherlich, in meinem Beispiel kommt es bei der Berechnung (die von links nach rechts erfolgt) nicht zu der Integer-Division von 12 und 100. Es wird also erst 0.5 * 12 errechnet (= 6.0) und dann 6.0/100 (= 0.06) |
AW: MS SQL Genauigkeit in der Termauswertung
Entfernt, da falsch.
|
AW: MS SQL Genauigkeit in der Termauswertung
Zitat:
Zitat:
|
AW: MS SQL Genauigkeit in der Termauswertung
Zitat:
![]() |
AW: MS SQL Genauigkeit in der Termauswertung
Bekloppt, habe die Seite neu geladen und das nun nochmal eingegeben und erhalte nun AUCH 0.... dann habe ich dahingehend nichts gesagt -.- (Anwender Fehler, habe den Code von links nicht nach rechts NEU kopiert^^)
Dennoch scheint man mehr als die "normalen" Rechenregeln in MS SQL bedenken zu müssen. Zitat:
select 12 / 100 = 0; select 12 / 100.0 = 0.12; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz