![]() |
Probleme mit Trunc
Hallo zusammen,
kann mir mal jemand auf die Sprünge helfen?
Delphi-Quellcode:
Warum ist der erste versuch falsch?
var
c: Int64; a,b: Double; begin a := 1.71; c := Trunc(a*100); // C=170 a := 1.71; b := a*100; c := Trunc(b); // C=171 |
AW: Probleme mit Trunc
Ich vermute, daß Du mit der 32-Bit-Version rechnest.
Dann ist das erste Ergebnis verständlich, da a*100 als Extended gerechnet wird: Das Zwischenresultat 170.999999999999996 wird dann auf 170 abgeschnitten. Unter 64-Bit ist das Zwischenresultat 171.000000000000000. Im Deinem zweiten Fall wird das Zwischenresultat erst nach Double gerundet und in b gespeichet (hat also wie bei 64-Bit den Wert 171.0) |
AW: Probleme mit Trunc
In Delphi konvertiert Trunc eine Gleitkommazahl in einen Integer-Wert.
X ist ein Ausdruck des Typs Real. Trunc gibt einen Int64-Wert mit dem gegen 0 gerundeten Wert von X zurück. ![]() |
AW: Probleme mit Trunc
Zitat:
|
AW: Probleme mit Trunc
Ok, das hab ich soweit verstanden.
Trotzdem stehe ich jetzt noch dümmer da als vorher :) Heute ist einfach nicht mein Tag. Ich möchte eigentlich nur einen Eurowert in Cent umrechnen und das möglichst ohne Rundungsfehler :roll: Tatsächlich wird mit 32Bit kompiliert. |
AW: Probleme mit Trunc
Dann rechne komplett 64-Bit-Integer oder mit Currency (<- dazu kann ich Dir aber nicht mehr sagen, siehe zB
![]() ![]() Oder wenn Du manuell wie oben mit 100 multiplizierst, sollte auch round statt trunc weiterhelfen. |
AW: Probleme mit Trunc
Ich bekomme durchgezogen durch die ganze Anwendung ein Double mit dem Wert.
Würde es denn unter gewissen umständen Probleme machen wenn ich den zweiten Weg einfach nutzen würde? |
AW: Probleme mit Trunc
Zitat:
Delphi-Quellcode:
,
< 0.5 -> Abrunden
Delphi-Quellcode:
.
> 0.5 -> Aufrunden
|
AW: Probleme mit Trunc
Zitat:
Mit round sollte es funktionieren. |
AW: Probleme mit Trunc
Zitat:
Delphi-Quellcode:
funktionieren.
Round(a*100)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:38 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 by Thomas Breitkreuz