Autor Beitrag
colaka
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 200
Erhaltene Danke: 4

Win XP, W7
Delphi 2005 Prof.
BeitragVerfasst: Do 26.03.09 08:34 
Hallo,

ich habe ein grundsätzliches Verständnisproblem und zwar würde mich interessieren, als was ich meine Variablen am besten deklariere.

Ich arbeite an einem kaufmännischen Programm und möchte meine Preise kalkulieren. Also auf die Genauigkeit nach der x-ten Stelle kommt es überhaupt nicht an, weil ein paar Cent mehr oder weniger keine Rolle spielen. Bisher habe ich meine Preise als Single deklariert, weil diese laut der Delphi-Hilfe nur 4 Byte groß sind. Doch jetzt habe ich in einem Delphi-Buch gelesen, daß Single-Werte intern sowieso in Extended-Werte umgewandelt werden, weil Windows damit schneller rechnen kann.

Sollte ich meine Variablen also gleich als Extended deklarieren, weil sie dann nicht mehr umgewandelt werden müssen?

Oder was für einen Datentyp würdet ihr mir in diesem Fall empfehlen?

Danke Ebi
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Do 26.03.09 09:45 
user profile iconcolaka hat folgendes geschrieben Zum zitierten Posting springen:
Doch jetzt habe ich in einem Delphi-Buch gelesen, daß Single-Werte intern sowieso in Extended-Werte umgewandelt werden, weil Windows damit schneller rechnen kann.


Wenn überhaupt dann werden sie in Double-Werte umgewandelt, aber nicht in Extended. Aus welchem Delphibuch hast du denn das?
Für Preiskalkulationen in einem kaufmännischen Programm solltest du ohnehin besser den Currency-Datentyp verwenden.

AXMD
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Do 26.03.09 09:47 
user profile iconcolaka hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,

ich habe ein grundsätzliches Verständnisproblem und zwar würde mich interessieren, als was ich meine Variablen am besten deklariere.

Kommt auf die Verwendung an.

user profile iconcolaka hat folgendes geschrieben Zum zitierten Posting springen:
Ich arbeite an einem kaufmännischen Programm und möchte meine Preise kalkulieren. Also auf die Genauigkeit nach der x-ten Stelle kommt es überhaupt nicht an, weil ein paar Cent mehr oder weniger keine Rolle spielen.

Mein Ex-ISP hat gestern von mir ne Mail bekommen, weil in einer Rückbuchung ~30 Cent fehlten. Nutzt der etwa dein Programm *gfg*

Kenne zudem Leute, die schon einmal eine Rechnung reklamiert bekommen haben, weil die MwSt falsch gerundet war (1 Cent!!!).

user profile iconcolaka hat folgendes geschrieben Zum zitierten Posting springen:
Bisher habe ich meine Preise als Single deklariert, weil diese laut der Delphi-Hilfe nur 4 Byte groß sind. Doch jetzt habe ich in einem Delphi-Buch gelesen, daß Single-Werte intern sowieso in Extended-Werte umgewandelt werden, weil Windows damit schneller rechnen kann.

Welches Delphi-Buch schreibt so nen Müll???

Single, Double und Extended sind alles dreis native Float-Formate der FPU, die beim Laden in die FPU in ein internes Format konvertiert werden (Extended brauch diese Konvertierung nicht, weil das bereits das interne Format ist). Auf Grund der Größe gehen sowohl Double als auch Extended (auf Grund des Verschnitts sogar besonders) schlecht zu lesen, weshalb es zu Performance-Einbrüchen kommt, wenn man diese häufig läd und speichert (was der Delphi-Compiler bei FPU-Code auch fleißig tut. Gerechnet wird alles intern als Extended (sei denn, man stellt das FPU-ControlWord um).

user profile iconcolaka hat folgendes geschrieben Zum zitierten Posting springen:
Sollte ich meine Variablen also gleich als Extended deklarieren, weil sie dann nicht mehr umgewandelt werden müssen? Oder was für einen Datentyp würdet ihr mir in diesem Fall empfehlen?

Für Geldbeträge gibt es Currency ...

user profile iconcolaka hat folgendes geschrieben Zum zitierten Posting springen:
Danke Ebi

Gruß, BenBE.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.