AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Formatfehler

Ein Thema von khh · begonnen am 17. Aug 2011 · letzter Beitrag vom 17. Aug 2011
Antwort Antwort
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#1

Formatfehler

  Alt 17. Aug 2011, 10:59
hallo zusammen,
mit
bruttopreis := RoundCurrency(bruttopreis,0)

runde ich eine berechneten Preis.
das funktioniert soweit, bis auf Ausnahmen in denen sich 4 Nachkommastellen ergeben und in bruttopreis stehen z.B. 21,9999 .

Formatiere ich den currency-wert mittels:

preisbruttoEdit.text := Format('%5.2f ', [bruttopreis]);

erhalter ich ein Ergebnis welches nicht weiter verwenden kann:

21,:0

Was kann ich machen?

danke gruss KHH
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#2

AW: Formatfehler

  Alt 17. Aug 2011, 11:07
ist doch richtig wenn du auf die 2. Nachkommastelle rundest wird aus 0,999 > 1,00. Es gibt ja noch das kaufmännische Runden um die Rundungsdifferenzen zu minimieren.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.455 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Formatfehler

  Alt 17. Aug 2011, 11:20
Mein Delphi XE liefert bei
Format('%5.2f', [21.9999]) 22,00, also völlig korrekt. Möglicherweise ein Bug in Lazarus? Klappt es, wenn Du die Länge weglässt und nur die Precision nimmst (%.2f)?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Formatfehler

  Alt 17. Aug 2011, 11:46
das Problem waren _mehr_ als 4 Nachkommastellen, die _korrekt_ auf eben diese 4 Nachkommastellen gerundet wurden.

ich hab diese jetzt auf 4 Nachkommastellen begrenzt, damit funktionierts korrekt


ich danke euch

Gruss KHH
Karl-Heinz
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#5

AW: Formatfehler

  Alt 17. Aug 2011, 12:11
Das Problem ist auch nicht, ob 21 oder 22, sondern das ":"-Zeichen in den Ausgaben. Da ":" = "9"+1 ist, sieht es nach einer mißglückten Optimierung aus (Arithmetik auf Strings).

Es ist auch weder ein eigentliches Lazurus- noch Format-Problem, sondern tritt auch schon bei writeln(bruttopreis:5:2); auf nur mit "." statt ",".
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Formatfehler

  Alt 17. Aug 2011, 12:30
Das Problem ist auch nicht, ob 21 oder 22, sondern das ":"-Zeichen in den Ausgaben. Da ":" = "9"+1 ist, sieht es nach einer mißglückten Optimierung aus (Arithmetik auf Strings).

Es ist auch weder ein eigentliches Lazurus- noch Format-Problem, sondern tritt auch schon bei writeln(bruttopreis:5:2); auf nur mit "." statt ",".
und wo liegt nun genau die Ursache ?
ich denke als Lösung Nachkommastellen zu kürzen ist ja nicht das Gelbe vom Ei
Karl-Heinz
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#7

AW: Formatfehler

  Alt 17. Aug 2011, 12:40
und wo liegt nun genau die Ursache ?
ich denke als Lösung Nachkommastellen zu kürzen ist ja nicht das Gelbe vom Ei
Zur die Ursache: Bin ich FPC-Entwickler? Notfalls haben doch alle Lazurus-Benutzer den FPC-Quellcode

Ein Workaround wäre: Rechne weiter mit Currency und bei der Ausgabe nimm
Delphi-Quellcode:
Format('%10.2f ', [extended(bruttopreis)]); //oder
Format('%10.2f ', [double(bruttopreis)]);
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Formatfehler

  Alt 17. Aug 2011, 13:01
ok, ich danke euch

gruss kh
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
40.480 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Formatfehler

  Alt 17. Aug 2011, 13:32
Das Problem ist auch nicht, ob 21 oder 22, sondern das ":"-Zeichen in den Ausgaben. Da ":" = "9"+1 ist, sieht es nach einer mißglückten Optimierung aus (Arithmetik auf Strings).
Das ist dann wohl definitiv ein Bug und das sollte man dann mal im entsprechenden Lazarusforum oder Bugtracker (gibt doch bestimmt sowas) gemeldet werden.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf