| 

.NET C# Java Javascript Exception

2
Hallo Kollegen,
das folgende Problem hat mich rund zwei Stunden gekostet, bis ich einen Workaround gefunden hatte.

Die Funktion ROUND( , 0) scheint NICHT mit allen Zahlen (als Konstanten) zu funktionieren. In meinem Fall liefert ROUND(9.7, 0) bzw. ROUND(9.8, 0) einen Konvertierungsfehler. Angeblich kann die Zahl nicht in das numeric-Format konvertiert werden - das erwartete Ergebnis war 10. Andere Zahlen (z.B. ROUND(10.7, 0)=11) funktionieren dagegen ohne Probleme. Es stellt sich die Frage, wie Microsoft diese Funktion implementiert hat?!

Als Workaround hat folgendes geholfen: ROUND(CAST( AS Money), 0). Eigentlich sollte bei Zahlen dies nicht erforderlich sein.
Vielleicht hilft es ja den einen oder anderen bei einem ähnlichen Problem.
MERKE: Auch wenn eine SQL-Funktion schon lange im System ist, können ungeahnte Stolpersteinen bei der Nutzung auf den Entwickler warten.
round sql-server-2008 sql-server-2012 t-sql
18.06.2014
edvservice 1,2k 6
1 Beitrag
1
18.06.2014
Floyd 14,6k 3 9
Das ist aus meiner Sicht nur mit Microsoftlogik nachvollziehbar.
Wenn bestimmte Zahlen nicht exakt bitweise abbildbar sind, dann muss ich eben intern mit der besten Näherung in höchster Genauigkeit arbeiten.

Ein Fehler ist aus meiner Sicht hier überhaupt nicht zu tolerieren!

Aber, vielen Dank für den Hinweis. Ich hätte niemals gedacht, dass eine derartig simple Funktion ein Problem (übrigens nach ca. 5 Einsatzjahren) bringen könnte.
edvservice 18.06.2014

Stelle deine Round-Frage jetzt!