AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Float nachkommastellen abschneiden???

Ein Thema von O.T. · begonnen am 25. Aug 2004 · letzter Beitrag vom 29. Apr 2011
Antwort Antwort
Seite 1 von 2  1 2      
O.T.

Registriert seit: 5. Sep 2003
Ort: München
13 Beiträge
 
#1

Float nachkommastellen abschneiden???

  Alt 25. Aug 2004, 13:52
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:
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.

Danke.

Bye
  Mit Zitat antworten Zitat
djmasi

Registriert seit: 9. Jun 2004
Ort: Leipzig
105 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Float nachkommastellen abschneiden???

  Alt 25. Aug 2004, 13:57
Nimm die Format-Funktion
  Result := Format('%8.2n', [DeinWert]);
Thomas Maßmann
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Float nachkommastellen abschneiden???

  Alt 25. Aug 2004, 13:57
Eleganter wäre Delphi-Referenz durchsuchenFormatFloat.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Float nachkommastellen abschneiden???

  Alt 25. Aug 2004, 13:57
oder so:

Zahl := round(Zahl *10) / 10; Evtl hilft auch Hier im Forum suchenkaufmännisch runden

Nachtrag: 2 Kommastellen natürlich * 100 und dann / 100
  Mit Zitat antworten Zitat
xineohp

Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
 
Delphi 2005 Professional
 
#5

Re: Float nachkommastellen abschneiden???

  Alt 25. Aug 2004, 14:02
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...
Peter Enenkel
  Mit Zitat antworten Zitat
Benutzerbild von Steve
Steve

Registriert seit: 2. Mär 2004
Ort: Würzburg
730 Beiträge
 
Delphi 2006 Personal
 
#6

Re: Float nachkommastellen abschneiden???

  Alt 25. Aug 2004, 14:18
Zitat von xineohp:
Du hast den String '45,78', wandelst ihn per strtofloat um und erhälst 45.78000000015 ?! Das wäre extrem komisch...
Das is tatsächlich komisch, aber (zumindest bei mir) sofort problemlos reproduzierbar. Mit größerer Abweichung sogar.

Stephan
Stephan B.
Wer andern eine Grube gräbt ist Bauarbeiter!
Wer im Glashaus sitzt, sollte sich lieber im Dunkeln ausziehen!
Außerdem dieser Satz kein Verb...
  Mit Zitat antworten Zitat
Benutzerbild von fiasko
fiasko

Registriert seit: 10. Dez 2002
Ort: Dresden
506 Beiträge
 
#7

Re: Float nachkommastellen abschneiden???

  Alt 25. Aug 2004, 15:12
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.
Thomas Liske
Posts comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
  Mit Zitat antworten Zitat
xineohp

Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
 
Delphi 2005 Professional
 
#8

Re: Float nachkommastellen abschneiden???

  Alt 25. Aug 2004, 15:15
bei mir nicht!
Peter Enenkel
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#9

Re: Float nachkommastellen abschneiden???

  Alt 25. Aug 2004, 15:42
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
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
xineohp

Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
 
Delphi 2005 Professional
 
#10

Re: Float nachkommastellen abschneiden???

  Alt 25. Aug 2004, 18:31
hm,

aber ich verstehe nicht warum, wenn ich einen String in eine Kommazahl umwandle, dabei eine Abweichung auftritt/treten sollte?!
Peter Enenkel
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 07:22 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