![]() |
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:
und dann wieder durch 100 dividiert, aber auch bei der Division macht Delphi wieder diesen komischen Wert daraus.
trunc((56,78)*100)
Wer kann mir helfen??? Brauch unbedingt den wert mit NUR zwei Kommastellen. :cry: Danke. Bye |
Re: Float nachkommastellen abschneiden???
Nimm die Format-Funktion
Delphi-Quellcode:
Result := Format('%8.2n', [DeinWert]);
|
Re: Float nachkommastellen abschneiden???
Eleganter wäre
![]() |
Re: Float nachkommastellen abschneiden???
oder so:
Delphi-Quellcode:
Evtl hilft auch [dp]kaufmännisch runden[/dp]
Zahl := round(Zahl *10) / 10;
Nachtrag: 2 Kommastellen natürlich * 100 und dann / 100 |
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: |
Re: Float nachkommastellen abschneiden???
Zitat:
Stephan |
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.
|
Re: Float nachkommastellen abschneiden???
bei mir nicht! :gruebel:
|
Re: Float nachkommastellen abschneiden???
schau dir mal den hier:
Zitat:
|
Re: Float nachkommastellen abschneiden???
hm,
aber ich verstehe nicht warum, wenn ich einen String in eine Kommazahl umwandle, dabei eine Abweichung auftritt/treten sollte?! |
Re: Float nachkommastellen abschneiden???
Gabs da nicht mal ne CPU mit einem Fehler in der Fließkommaeinheit?
Gruß Michael |
Re: Float nachkommastellen abschneiden???
nein. floats werden dargestellt als (ich kann mich irren, jedenfalls werden nicht die ziffern gespeichert) basis, exponent und so nen kram. und da kann es sein, dass es zahlen gibt, die als ziffern simpel zu notieren sind, aber in der float-schreibweise garnicht darstellbar sind. dann wird halt die nächste darstellbare zahl genommen. und dann kann es schon sein, dass solche fehler entstehn
|
Re: Float nachkommastellen abschneiden???
1. FloatToStrF
2. z. B. periodische Dezimalbrüche, dazu gehört auch 0,01, würden unendlich viel Speicher verbrauchen... --> "binär gerundet" -> andere Zahl |
Re: Float nachkommastellen abschneiden???
Zitat:
Stephan |
AW: Float nachkommastellen abschneiden???
Mal ne andere Frage nebenbei: Hat Delphi nicht eine Funktion, mit der man NUR die Nachkommastellen extrahieren kann ? Also aus 15.67 möchte ich nur 0.67 weiterverarbeiten.
//edit: habs schon: Frac aus system.pas macht das. |
AW: Float nachkommastellen abschneiden???
Frac()
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:25 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