Thema: Delphi FMod "streikt"

Einzelnen Beitrag anzeigen

gammatester

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

AW: FMod "streikt"

  Alt 27. Jun 2017, 10:04
Ich hätte dazu auch noch ne Frage:
Wie bekommt man denn eine 150-stellige Zahl überhaupt hin ?
Extended sollte doch sofort auf 18-20 Stellen kürzen, oder bleibt 1.2E150 etwa so bestehen ?

Delphi-Quellcode:
    LExt := 1.2E150;
    LExt := LExt + 0.1E150; // Das geht tatsächlich
    LExt := Sin(LExt); // Das wohl auch nicht
Ich benutze solche Extremen normalweise nicht, bin aber auch etwas schockiert das es nur "teilweise" funktioniert.
Ich glaube Du solltest Dir erst einmal klar werden, was Du unter "Stellen" verstehst. Bei Ganzzahl-Werten sind die "Stellen" tatsächlich so etwas wie die Anzahl der einzelnen (Dezimal-)Ziffern.

Bei Fließkomma-Zahlen (double) hat man sowas wie m*10^e, wobei im wesentlichen m eine Ganzzahl zwischen 0 und ca 10^16 ist. Hier hat ein double also ca 16 (signifikante "Stellen").

Bei Fließkomma-Rechnungen wird immer auf diese 16 Stellen gerundet und das hat manchmal komische Konsequenzen, zB wird 2E16 + 1 = 20000000000000000 + 1 = 20000000000000001 zu 20000000000000000 gerundet, d.h. Du kannst beliebig oft 1 zu 2E16 addieren ohne das sich der Double-Wert ändert.

Daß sin(1e150) nicht funktioniert, ist ein Delphi-Bug (EMBA wird sagen 'Feature').
  Mit Zitat antworten Zitat