AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Rundungsproblem mit MySQL
Thema durchsuchen
Ansicht
Themen-Optionen

Rundungsproblem mit MySQL

Ein Thema von Angel4585 · begonnen am 26. Apr 2006 · letzter Beitrag vom 27. Apr 2006
Antwort Antwort
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#1

Rundungsproblem mit MySQL

  Alt 26. Apr 2006, 16:07
Datenbank: MySQL • Version: 5 • Zugriff über: ZEOS
Hallo zusammen,

ich habe ein kleines Rundungsproblem was vermutlich an MySQL liegt.

Ich habe ein FloatFeld in welches ich z.B. den Wert "1,95583" eingebe. Dann mache ich ein einfaches Post, wodurch die Daten ja eigentlich gespeichert werden sollten. Allerdings steht dann aufeinmal "1,9558299779892" in dem Feld drin

Weis jemand was ich da falsch mache?

MfG
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Rundungsproblem mit MySQL

  Alt 26. Apr 2006, 17:38
Wie fügst du das ein ( Code).
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Rundungsproblem mit MySQL

  Alt 26. Apr 2006, 19:11
Nimm doch mal ein anderes Datenfeld, z.B. numeric oder currency.
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Rundungsproblem mit MySQL

  Alt 26. Apr 2006, 22:31
@mkinzler:

 Create Table if not exists Tabellenname (Feldname FLOAT); @Jelly: ich werd da morgen gleich ausprobieren aber jetz iss zu*gäähhnnn* .zZ(Hier gibbet ja gerkein Smiley der pennt )
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Rundungsproblem mit MySQL

  Alt 26. Apr 2006, 22:33
Ich meinte eigentlich den INSERT.
Markus Kinzler
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Rundungsproblem mit MySQL

  Alt 27. Apr 2006, 08:09
Naja ich mach das mit den ZEOS Queries. Einfach Append, dann in ein Editfeld schreiben und dann en Post.
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Rundungsproblem mit MySQL

  Alt 27. Apr 2006, 08:10
Zeig mal den Code dafür.
Markus Kinzler
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Rundungsproblem mit MySQL

  Alt 27. Apr 2006, 08:28
Hä? Bitte:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender : TObject);
begin
Query.Append;
end;
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender : TObject);
begin
if Query.State <> dsBrowse then
  Ouery.Post;
end;
und dnn gibts halt noch des DBEdit in das ich zwicshen den Klicks die Zahl eintrage. Der Fehler taucht übrigens auch bei anderen Kommazahlen auf.. fängt bei 0,1 an und kommt eigentlich bei jeder Kommazahl ausser *,0 vor.
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Rundungsproblem mit MySQL

  Alt 27. Apr 2006, 09:04
Hai Angel,

hier mal ein Auszug aus der mySQL 5.x Doku:
Zitat:
Using FLOAT might give you some unexpected problems because all calculations in MySQL are
done with double precision. See Section A.5.7, “Solving Problems with No Matching Rows”.
In der deutschen Doku zu mySQL 4.x steht:
Zitat:
Der FLOAT-Typ wird benutzt, um näherungsweise numerische Datentypen zu repräsentieren.
Wenn Du es genau speichern möchtest verwende den Typ DEZIMAL unter angabe der Genauikgeit
Code:
DEZIMAL(10,5)
Eine Dezimalzahl mit 10 Stellen, der übergebene Wert wird auf 5 Stellen nach dem Komma gerundet.

Zitat:
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
A packed “exact” fixed-point number. M is the total number of decimal digits (the precision) and
D is the number of digits after the decimal point (the scale). The decimal point and (for negative
numbers) the ‘-’ sign are not counted in M. If D is 0, values have no decimal point or fractional
part. The maximum number of digits (M) for DECIMAL is 65. The maximum number of supported
decimals (D) is 30. If D is omitted, the default is 0. If M is omitted, the default is 10.
UNSIGNED, if specified, disallows negative values.
All basic calculations (+, -, *, /) with DECIMAL columns are done with a precision of 65
digits.
Stephan B.
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Rundungsproblem mit MySQL

  Alt 27. Apr 2006, 09:44
Hab jetz den Typ DECIMAL(10,5) genommen, aber es wird mir imernoch ein etwas seltsamer Wert angezeigt. Komischerweise in einem Grid mit einem FloatField:

Delphi-Quellcode:
  with Columns.Add do
    begin
    FieldName:=cfEinzelPreis;
    Width:=100;
    TFloatField(Field).DisplayFormat:=',.00';
    end;
und drin steht

1234,09997558594 anstatt 1234,1
Martin Weber
Ich bin ein Rüsselmops
  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 08:51 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