Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Woher kommen diese Nachkommastellen? (https://www.delphipraxis.net/64384-woher-kommen-diese-nachkommastellen.html)

sunnyandy 2. Mär 2006 23:08

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

Woher kommen diese Nachkommastellen?
 
Hallo,
erstelle die Datenbank folgerndermaßen:
Delphi-Quellcode:
SQL.Text := 'CREATE TABLE IF NOT EXISTS `' +tbl_weinliste+'` ('+
      '`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,' +
      '`artnr` TEXT NOT NULL,' +
      '`preis` FLOAT NOT NULL,' +
      '`bezeichnung` TEXT NOT NULL,' +
      '`bestand` INT NOT NULL)CHARACTER SET latin1 COLLATE latin1_german2_ci;';
Und beim Öffnen mach ich es so:
Delphi-Quellcode:
Sql.Text := 'SELECT * FROM `'+tbl_weinliste+'`';
    Open;
    while not Eof do
    begin
      litem := frmmain.lvweine.Items.Add;
      litem.Data := Pointer(FieldbyName('id').AsInteger);
      litem.Caption := FieldbyName('artnr').AsString;
      litem.SubItems.Add(FieldbyName('bezeichnung').AsString);
      litem.SubItems.Add(FieldbyName('preis').AsString);
      litem.SubItems.Add(FieldbyName('bestand').AsString);
      Next;
Mein Problem ist jetzt, dass ich beispielsweise einen Preis von "3.99" eingebe und phpmyadmin zeigt ihn auch so richtig an. Beim Öffnen aber steht bei mir im Programm "3.990000005674", wieso das?
Wenn ich das Datenfeld so auslese
Delphi-Quellcode:
litem.SubItems.Add(FieldbyName('preis').AsString);
konvertiert er es doch gleich in deinen String oder? Was mache ich falsch?
Danke schonmal !!

dizzy 2. Mär 2006 23:16

Re: Woher kommen diese Nachkommastellen?
 
Und wieder einmal das ich weiss nicht wie oft schon verlinkte Posting ;)
Und dein Feld "Preis" hast du als Float definiert. Sinnvoll wäre dort ein Ganzzahlentyp, bei dem du die letzen n Stellen als Nachkommaanteil interpretierst (Festkommazahlen). Das hat den Vorteil gegenüber Strings in der DB, dass du damit weiterhin ganz normal rechnen kannst. Du musst immer nur den Faktor im Hinterkopf haben.

Gruss,
Fabian

sunnyandy 2. Mär 2006 23:23

Re: Woher kommen diese Nachkommastellen?
 
Hmm ja habe mir das Posting durchgelesen :)
Dann werde ich es einfach als Sting speichern, danke !!

Sharky 3. Mär 2006 06:32

Re: Woher kommen diese Nachkommastellen?
 
Zitat:

Zitat von sunnyandy
... Dann werde ich es einfach als Sting speichern, danke !!

Autsch. ;-)
Nicht als String speichern sondern so wie von dizzy gesagt als Ganzzahl (integer).
Du musst nur im Kopf behalten das Du den Preis nicht in Euro sondern in Cent abspeicherst.

xaromz 3. Mär 2006 09:21

Re: Woher kommen diese Nachkommastellen?
 
Hallo,

ich erstelle mir für Währungen einfach so ein Feld:
SQL-Code:
`preis` decimal(10,2) NOT NULL default '0.00'
Damit hab ich eine Festkommazahl mit genau dem gewünschten Wertebereich.

Gruß
xaromz


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:19 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