Entwickler-Ecke
Datenbanken - MS-SQL real <- TADO schreibt real richtig liest aber ungenau
itspeed - Mi 06.05.09 11:38
Titel: MS-SQL real <- TADO schreibt real richtig liest aber ungenau
Guten Morgen Forum
Auf die Gefahr hin, dass das schon mal Thema war (fand bei suche jedoch nichts), hier meine Herausforderung:
Ich schreibe berechnete Real-Werte welche auf 2 Stellen nach dem Komma gerundet sind in die MS-SQL (2005) Datenbank in ein real Feld.
Betrachte ich das ganze mit dem Server Management Studio, sind in der Tabelle auch die Zahlen richtig gespeichert.
Lese ich diese nun in ein TDBGrid zurück, kommen da jedoch nur angenäherte Werte mit mehr Kommastellen zurück. Was mache ich falsch?
Beispiel aus 100.84 wird 100.8356781
Datenverknüpfung
MS-SQL(2005) real Field <- TADOConnection < TADODataSet < TDataSource <- TDBGrid
Würde mir sehr helfen, wenn ich da einen Tip von Euch bekomme.
mfg itspeed
Delete - Mi 06.05.09 11:40
Wenn Du immer nur 2 Nachkommastellen haben möchtest, solltest Du es einmal mit Decimal statt real versuchen.
itspeed - Mi 06.05.09 12:17
DeddyH hat folgendes geschrieben : |
Wenn Du immer nur 2 Nachkommastellen haben möchtest, solltest Du es einmal mit Decimal statt real versuchen. |
Nun DECIMAL hatten wir schon mal. Ist aber eher hinderlich in einem ERM welches sich über mehrere Tabellen und in Verbindung mit Access-DB's (externer Datentransfer in eine Access-APP welche ich leider noch nicht auf den Mond schiessen kann...). Weiter bietet DECIMAL keine gute Unterstützung, wenn wir das Projekt dereinst einmal auf .NET wandeln wollen.
Also nochmals. In der SQL-Tabelle steht explizit der richtige Real-Wert. Zurückgelesen in das Grid kommt nur so in etwa der Wert...
mfg
itspeed
Delete - Mi 06.05.09 12:59
Zitat: |
In der SQL-Tabelle steht explizit der richtige Real-Wert. |
Mir scheint eher, der Wert wird Dir nur so dargestellt, wie Du ihn auch erwartest. Man prüft ja auch keine Gleitkommazahlen mit "=" auf Gleichheit, da man so wahrscheinlich nicht das richtige Ergebnis erhält.
itspeed - Do 14.05.09 08:23
DeddyH hat folgendes geschrieben : |
Zitat: | In der SQL-Tabelle steht explizit der richtige Real-Wert. |
...Man prüft ja auch keine Gleitkommazahlen mit "=" auf Gleichheit... |
Es geht hier nicht um das Vergleichen von Gleitkommazahlen sondern um das sichern einer Serie von Werten, welche in sich wieder einen definierte Summe ergeben sollten (berechnete Trendkurven).
DeddyH hat folgendes geschrieben : |
Mir scheint eher, der Wert wird Dir nur so dargestellt... |
Wenn dem so wäre würde mich der Debuger (Delphi 2006) und der SQL-Server-Manager anlügen! Denn, wenn ich Gleitkommazahlen mit 4 oder 5 Nachkommastellen in die Tabelle schreiben, werden diese vom SQL-Server-Manager dort auch so dargestellt..
Das Problem an und für sich ist noch nicht gelöst! Da die Zahlenreihen jedoch eher grössere Werte enthalten, habe ich das Problem insofern entschäft, als ich die berechneten Werte auf 0.05 genau gerundet runterschreibe... und siehe da: es gibt keine Differenzen mehr - Wunder o Wunder! Die Lösung ist nicht das, was ich erwartet hätte, aber es funktioniert.
itspeed
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!