Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Float nachkommastellen abschneiden??? (https://www.delphipraxis.net/28497-float-nachkommastellen-abschneiden.html)

O.T. 25. Aug 2004 13:52


Float nachkommastellen abschneiden???
 
Hi ihr lieben....

Hab ne harte Nuss hier:
Und zwar hab ich n String den ich zum Float-Wert mache....aber ich benötige nur 2 Kommastellen, denn wenn ich z.b. '56.87' (oder ähnlich habe), dann macht Delphi daraus den Wert 56.87000000000017 (Delphi 5). Mit diesem Wert kann ich aber nicht so viel anfangen, da ich ihn in die Datenbank schreiben möchtt und später noch damit weiter rechnen will.

Habs schon so versucht:
Delphi-Quellcode:
trunc((56,78)*100)
und dann wieder durch 100 dividiert, aber auch bei der Division macht Delphi wieder diesen komischen Wert daraus.


Wer kann mir helfen??? Brauch unbedingt den wert mit NUR zwei Kommastellen. :cry:

Danke.

Bye

djmasi 25. Aug 2004 13:57

Re: Float nachkommastellen abschneiden???
 
Nimm die Format-Funktion
Delphi-Quellcode:
  Result := Format('%8.2n', [DeinWert]);

Chewie 25. Aug 2004 13:57

Re: Float nachkommastellen abschneiden???
 
Eleganter wäre Delphi-Referenz durchsuchenFormatFloat.

Matze 25. Aug 2004 13:57

Re: Float nachkommastellen abschneiden???
 
oder so:

Delphi-Quellcode:
Zahl := round(Zahl *10) / 10;
Evtl hilft auch [dp]kaufmännisch runden[/dp]

Nachtrag: 2 Kommastellen natürlich * 100 und dann / 100

xineohp 25. Aug 2004 14:02

Re: Float nachkommastellen abschneiden???
 
moin,

nur um die Frage richtig zu verstehen:

Du hast den String '45,78', wandelst ihn per strtofloat um und erhälst 45.78000000015 ?! Das wäre extrem komisch... :gruebel:

Steve 25. Aug 2004 14:18

Re: Float nachkommastellen abschneiden???
 
Zitat:

Zitat von xineohp
Du hast den String '45,78', wandelst ihn per strtofloat um und erhälst 45.78000000015 ?! Das wäre extrem komisch... :gruebel:

Das is tatsächlich komisch, aber (zumindest bei mir) sofort problemlos reproduzierbar. Mit größerer Abweichung sogar.

Stephan

fiasko 25. Aug 2004 15:12

Re: Float nachkommastellen abschneiden???
 
Das liegt doch daran das hier eine Fließkommazahl abgespeichert wird - da bekommt per Definition nie den genauen Wert hin - da müßtest du schon eine Festkommazahl mit genügend stellen nehmen (z.B. Real) - sowas macht man aber eigentlich nicht mehr.

xineohp 25. Aug 2004 15:15

Re: Float nachkommastellen abschneiden???
 
bei mir nicht! :gruebel:

nailor 25. Aug 2004 15:42

Re: Float nachkommastellen abschneiden???
 
schau dir mal den hier:
Zitat:

Der Typ Currency ist ein Festkomma-Datentyp, der Rundungsfehler in finanzmathematischen Berechnungen minimiert. Er wird als skalierter 64-Bit-Integer gespeichert, bei dem die vier niedrigst wertigen Stellen implizit vier Nachkommastellen repräsentieren. Bei einer Kombination mit anderen reellen Typen in Zuweisungen und Ausdrücken werden Currency-Werte automatisch mit 10000 multipliziert.
an, oder mach das ganze selbst aus einem integer, indem du die einer und zehner als hunderstel und zehntel nimmst

xineohp 25. Aug 2004 18:31

Re: Float nachkommastellen abschneiden???
 
hm,

aber ich verstehe nicht warum, wenn ich einen String in eine Kommazahl umwandle, dabei eine Abweichung auftritt/treten sollte?!


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:04 Uhr.
Seite 1 von 2  1 2      

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