Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Probleme mit Trunc (https://www.delphipraxis.net/196055-probleme-mit-trunc.html)

KodeZwerg 19. Apr 2018 12:12

AW: Probleme mit Trunc
 
Vielleicht hilft Dir das weiter. Achtung! Keine Fehlerkontrolle!

Delphi-Quellcode:
function EuroToCt (const Euro: Single) : String;
begin
 Str(euro*100:8:2,Result);
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
 Memo1.Lines.Add(EuroToCt(1.71));
end;

gammatester 19. Apr 2018 12:21

AW: Probleme mit Trunc
 
Zitat:

Zitat von KodeZwerg (Beitrag 1399843)
Vielleicht hilft Dir das weiter. Achtung! Keine Fehlerkontrolle!
Delphi-Quellcode:
function EuroToCt (const Euro: Single) : String;
begin
 Str(euro*100:8:2,Result);
end;

Das ist doch nur reine Formatierung und hilft nicht, wenn mit c weiter gearbeitet werden soll.

KodeZwerg 19. Apr 2018 12:25

AW: Probleme mit Trunc
 
Es sollte eine weitere Möglichkeit zu den bereits genannten Darstellen. Was man damit macht entscheidet jeder selbst, oder?

hhcm 19. Apr 2018 12:25

AW: Probleme mit Trunc
 
Zitat:

Zitat von gammatester (Beitrag 1399832)
Mit Deinem Code hast Du dann für andere Werte die Probleme, zB für a=1.13.

:roll: Oh mann. Ja, das ist natürlich nicht gewünscht.

Zitat:

Mit round sollte es funktionieren.
Ich habe jetzt mit unterschiedlichsten Werten getestet.
Round scheint das mittel zur wahl.

jziersch 20. Apr 2018 07:01

AW: Probleme mit Trunc
 
Zitat:

Zitat von hhcm (Beitrag 1399822)
Ich möchte eigentlich nur einen Eurowert in Cent umrechnen und das möglichst ohne Rundungsfehler :roll:

Wenn es Dir um korrekte ct Beträge geht solltest Du aber bedenken, dass Delphi nicht kaufmännisch rundet.

Hier ein Artikel dazu:
https://www.delphi-treff.de/tipps-tr...orrekt-runden/

hhcm 20. Apr 2018 08:06

AW: Probleme mit Trunc
 
Ich habe zu 99% schon gerundete Beträge. Das Trunc bzw. Round ist nur zur Sicherheit.

himitsu 20. Apr 2018 09:48

AW: Probleme mit Trunc
 
PS: EuroToCt -> Delphi-Referenz durchsuchenCurrency
ansonsten seid ihr an Rundungsfehlern selber Schuld

Alallart 20. Apr 2018 16:11

AW: Probleme mit Trunc
 
@hhcm

Vielleicht noch mal klar ausgedrückt: 2 + 2 ist eigentlich 4. Wenn du aber mit Realen Zahlen in Delphi rechnest, kannst du nie sicher sein, dass das Ergebnis auch 4 wird. Die Nachkomma-Zahlen werden irgendwann gerundet, damit sie in die 8 Byte (oder was sonst) passen.

Wenn du den Effekt plastisch sehen willst, und Excel besitzt, kannst du ein kleines Experiment machen. Formatiere zuerst die Spalte A als Zahl (nicht Standard). Gib dann in die Zelle A1 den Wert
Code:
=Pi()
Gib dann in die Zelle A2 den Wert
Code:
=A1*1000
Kopiere dann durch ziehen die Zelle A2 an die 10 Zellen runter. Du wirst erleben, dass Computer standardmäßig keine unendlichen Zahlen kennen, obwohl Pi eine ist.

gammatester 20. Apr 2018 19:00

AW: Probleme mit Trunc
 
Zitat:

Zitat von Alallart (Beitrag 1400014)
Vielleicht noch mal klar ausgedrückt: 2 + 2 ist eigentlich 4. Wenn du aber mit Realen Zahlen in Delphi rechnest, kannst du nie sicher sein, dass das Ergebnis auch 4 wird.

Das ist natürlich komplett falsch! Fließkomma-Addition, -Subtraktion und -Multiplikation von Werten mit frac()=0 ist 100% exakt, so lange die Operanden und das Ergebnis innerhalb gewisser Grenzen liegen,bei Single ist das 2^22=4194304, bei Double 2^52 = 4.50..E15 und Extended 2^63=9.22..E18.

Also ist 2+2 = 4 immer erfüllt.

Vernünftiges Arbeiten mit Fließkommazahlen ist kann schon trickreich genug sein, deshalb sollte so ein Unsinn (und vergleichbare Mythen) nicht noch verbreitet werden.

Alallart 20. Apr 2018 19:42

AW: Probleme mit Trunc
 
@gammatester

Natürlich war das Beispiel mit
Code:
2 + 2 nicht immer 4
ein Scherz. Es sollte nur das Problem verdeutlichen. Außerdem gilt
Code:
2 + 2 = 4
als ein Synonym für eine unumstößliche Tatsache, sonst hätte ich 1 + 2 = 3 geschrieben. Du hast die Aussage nur nicht verstanden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:10 Uhr.
Seite 2 von 4     12 34      

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