Einzelnen Beitrag anzeigen

Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.095 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Nachkommastellen von Extended abschneiden um Integer zu erhalten

  Alt 26. Mai 2024, 19:36
ja, bei mir auch wenn ich es so teste.

Die 24.1 werden aus mehreren Werten zusammen addiert und genau das führ zu diesem Seiteneffekt.
Es hängt damit zusammen wie Float Werte verarbeitet werden.

Code:
var a,b,c:extended;
begin
  inherited;
  a := 8.0;
  b := 8.4;
  c := a + b + 7.7;
  ShowMessage(Trunc(c * 10).ToString);


[Edit] ich könnte für meinen Fall anstelle von extended auch real verwenden. Dann würde zumindest dieser Fall funktionieren aber es muss doch eine zuverlässige Lösung dafür geben oder?

[Edit2]
Code:

var a,b,c,d,e:extended;
    i:integer;
begin
  inherited;
  a := 8.0;
  b := 8.4;
  c := 7.7;
  d := a + b + c;
  e := d * 10.0; // hier ist der Wert immer noch richtig e=241.
  i := Trunc(e); //Trunc schneidet nicht ab sondern Rundet oder konvertiert.
  ShowMessage(i.ToString);

Geändert von Kostas (26. Mai 2024 um 19:49 Uhr)
  Mit Zitat antworten Zitat