AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Rundungsfehler bei MySQL 4.1 ?
Thema durchsuchen
Ansicht
Themen-Optionen

Rundungsfehler bei MySQL 4.1 ?

Ein Thema von uwewo · begonnen am 12. Jul 2006 · letzter Beitrag vom 12. Jul 2006
Antwort Antwort
uwewo

Registriert seit: 14. Jul 2004
Ort: Karlsruhe
479 Beiträge
 
Delphi 2006 Professional
 
#1

Rundungsfehler bei MySQL 4.1 ?

  Alt 12. Jul 2006, 10:17
Datenbank: MySQL • Version: 4.1 • Zugriff über: Zeos 3.5
Hallo,

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

2.135 gerundet 2.14 ergibt

select Round(2.135,2) ergibt bei MySQL alledings 2.13

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
Uwe
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Rundungsfehler bei MySQL 4.1 ?

  Alt 12. Jul 2006, 10:28
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
uwewo

Registriert seit: 14. Jul 2004
Ort: Karlsruhe
479 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Rundungsfehler bei MySQL 4.1 ?

  Alt 12. Jul 2006, 10:58
Hallo Bernhard,


Das ist auch aus der Hilfe

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.

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.
Uwe
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#4

Re: Rundungsfehler bei MySQL 4.1 ?

  Alt 12. Jul 2006, 11:21
Auf meinem MySQL - 5.0.15-nt gibt select Round(2.135,2) 2.14 aus
  Mit Zitat antworten Zitat
uwewo

Registriert seit: 14. Jul 2004
Ort: Karlsruhe
479 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Rundungsfehler bei MySQL 4.1 ?

  Alt 12. Jul 2006, 11:23
Zitat von jfheins:
Auf meinem MySQL - 5.0.15-nt gibt select Round(2.135,2) 2.14 aus
@jfheins

Danke Dir
Uwe
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz