Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Rundungsfehler bei MySQL 4.1 ? (https://www.delphipraxis.net/73084-rundungsfehler-bei-mysql-4-1-a.html)

uwewo 12. Jul 2006 09:17

Datenbank: MySQL • Version: 4.1 • Zugriff über: Zeos 3.5

Rundungsfehler bei MySQL 4.1 ?
 
Hallo,

vielleicht denke ich ja falsch, aber ich war immer der Meinung das

2.135 gerundet 2.14 ergibt

SQL-Code:
select Round(2.135,2)
ergibt bei MySQL alledings 2.13

SQL-Code:
select Round(2.1351,2)
hingegen liefert 2.14 zurück.

Ist das ein Bug von MySQL 4.1 ?

Könnte ein Benutzer von MySQL 5.x dies bitte mal testen.

Danke

Bernhard Geyer 12. Jul 2006 09:28

Re: Rundungsfehler bei MySQL 4.1 ?
 
Siehe MySQL-Hilfe:

Zitat:

ROUND(X)

Gibt das Argument X zurück, gerundet auf die nächste Ganzzahl:

...

Beachten Sie, dass das Verhalten von ROUND() abhängig von der C-Bibliothek-Implementation ist, wenn das Argument in der Mitte zwischen zwei Ganzzahlen liegt. Einige runden auf die nächste gerade Zahl, oder immer nach oben, immer nach unten oder immer Richtung 0. Wenn Sie eine bestimmte Art zu runden brauchen, sollten Sie statt dessen wohldefinierte Funktionen wie TRUNCATE() oder FLOOR() benutzen.

uwewo 12. Jul 2006 09:58

Re: Rundungsfehler bei MySQL 4.1 ?
 
Hallo Bernhard,


Das ist auch aus der Hilfe

SQL-Code:
ROUND(X,D)
Gibt das Argument X zurück, gerundet auf eine Zahl mit D Dezimalstellen. Wenn D 0 ist, hat das Ergebnis keinen Dezimalpunkt oder Bruchteil:


mysql> select ROUND(1.298, 1);
-> 1.3
mysql> select ROUND(1.298, 0);
-> 1


Und auch das

Diese Funktion kann bei BIGINT-Werten sicher benutzt werden.

SQL-Code:
FLOOR(X)
Gibt den größten Ganzzahl-Wert zurück, der nicht größer als X ist:

mysql> select FLOOR(1.23);
-> 1
mysql> select FLOOR(-1.23);
-> -2


Oder das

TRUNCATE(X,D)

Gibt die Zahl X zurück, auf D Dezimalstellen beschnitten. Wenn D 0 ist, hat das Ergebnis keinen Dezimalpunkt oder Bruchteil:

mysql> select TRUNCATE(1.223,1);
-> 1.2
mysql> select TRUNCATE(1.999,1);
-> 1.9
mysql> select TRUNCATE(1.999,0);
-> 1

Ich schreibe hier nichts ins Forum wenn ich nicht schon jede Hilfe gelesen, oder Funktionen ausprobiert habe.

Ich wollte außerdem nur wissen ob das Problem auch bei MySQL 5.0 besteht.

jfheins 12. Jul 2006 10:21

Re: Rundungsfehler bei MySQL 4.1 ?
 
Auf meinem MySQL - 5.0.15-nt gibt
SQL-Code:
select Round(2.135,2)
2.14 aus ;)

uwewo 12. Jul 2006 10:23

Re: Rundungsfehler bei MySQL 4.1 ?
 
Zitat:

Zitat von jfheins
Auf meinem MySQL - 5.0.15-nt gibt
SQL-Code:
select Round(2.135,2)
2.14 aus ;)

@jfheins

Danke Dir


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:11 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-2025 by Thomas Breitkreuz