Wenn das halbwegs Delphi Kompatibel ist, so wirkt das nur im 64 Bit Mode. Zumindest laut Doku von Embarcadero. Das sollte im 32Bit mode auch immer 80Bit verwendet werden. Quelle: https://docwiki.embarcadero.com/RADStud ... 3%BCr_x64)wp_xyz hat geschrieben: Mi 5. Apr 2023, 09:50 Und der in dem Artikel erwähnte Trick mit {$excessprecision on} funktioniert auch nicht...
Rechenfehler mit Double-Gleitkommewerten
- af0815
- Lazarusforum e. V.
- Beiträge: 6762
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Rechenfehler mit Double-Gleitkommewerten
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: Rechenfehler mit Double-Gleitkommewerten
Kann ich nicht bestätigen. Bei mir macht das den Unterschied.wp_xyz hat geschrieben: Mi 5. Apr 2023, 09:50 Und der in dem Artikel erwähnte Trick mit {$excessprecision on} funktioniert auch nicht...
Lazarus 2.3.0 (rev main-2_3-2827-g64b27f1207) FPC 3.3.1 x86_64-linux-gtk2
- af0815
- Lazarusforum e. V.
- Beiträge: 6762
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Rechenfehler mit Double-Gleitkommewerten
Theo, das glaube ich dir, weil du einen 64 Bit Compiler verwendest.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: Rechenfehler mit Double-Gleitkommewerten
Wp nicht?af0815 hat geschrieben: Mi 5. Apr 2023, 12:30 Theo, das glaube ich dir, weil du einen 64 Bit Compiler verwendest.
viewtopic.php?p=134879#p134879
Re: Rechenfehler mit Double-Gleitkommewerten
Nein. Win-11 mit 64-bit Compiler (Lazarus 2.3.0 (rev main-2_3-3113-g96a18b331f) FPC 3.2.2 x86_64-win64-win32/win64), da hat das keinen Effekt.theo hat geschrieben: Mi 5. Apr 2023, 12:36Wp nicht?af0815 hat geschrieben: Mi 5. Apr 2023, 12:30 Theo, das glaube ich dir, weil du einen 64 Bit Compiler verwendest.
viewtopic.php?p=134879#p134879
Re: Rechenfehler mit Double-Gleitkommewerten
Dann liegt es aber an Linux<>Win und nicht an dem 64bit Compiler?wp_xyz hat geschrieben: Mi 5. Apr 2023, 14:25 Nein. Win-11 mit 64-bit Compiler (Lazarus 2.3.0 (rev main-2_3-3113-g96a18b331f) FPC 3.2.2 x86_64-win64-win32/win64), da hat das keinen Effekt.
Re: Rechenfehler mit Double-Gleitkommewerten
Unter Delphi XE 10.4 liefert der 64-Bit-Compiler von Haus aus das richtige Ergebnis, egal ob $excessprecision verwendet wird oder nicht, oder auf on bzw. off steht.
-
- Beiträge: 724
- Registriert: Do 27. Sep 2012, 00:07
- OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
- CPU-Target: x86_64-win64
- Wohnort: Hamburg
Re: Rechenfehler mit Double-Gleitkommewerten
Du verwendest typisierte Variablen in der Formel. Der Compiler kann nur wegen 1 und 2 keine "falsche" Typen mehr nehmen. Du könntest auch wie wp explizite Typumwandlung machen.Niesi hat geschrieben: Mi 5. Apr 2023, 11:12 Witzig ...
So bekomme ich die Ergebnisse auch korrekt - was ist denn da los????Code: Alles auswählen
f := i * g + (2 * m + 1) * h;
![]()
Bei meinem Thema erzählte PascalDragon, dass Extended-Zahlen bei x86-Win64 anders behandelt wird als bei Linux. Vielleicht ist da noch mehr anders.
Damit das ganze nicht off-topic wird bin ich raus dem Thema.
- af0815
- Lazarusforum e. V.
- Beiträge: 6762
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Rechenfehler mit Double-Gleitkommewerten
Ist das nicht die richtige Compilerdirektive https://www.freepascal.org/docs-html/pr ... 80001.2.52
$MINFPCONSTPREC : Specify floating point constant precision
weil $excessprecision ist in der FPC Doku für mich nicht auffindbar.
$MINFPCONSTPREC : Specify floating point constant precision
weil $excessprecision ist in der FPC Doku für mich nicht auffindbar.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: Rechenfehler mit Double-Gleitkommewerten
In der Doku finde ich es auch nicht, aber ist schon drin:af0815 hat geschrieben: Mi 5. Apr 2023, 19:43 weil $excessprecision ist in der FPC Doku für mich nicht auffindbar.
https://gitlab.com/freepascal.org/fpc/s ... 05c1e974e1
Und mind. auf Linux 64 macht es auch einen Unterschied.
Eine Doku findet man bei Delphi.
Re: Rechenfehler mit Double-Gleitkommewerten
Mit dem {$MINFPCONSTPREC 64} funktioniert die Rechnung auf Win/64 mit 64-bit Compiler korrekt. Ich habe den wiki-Artikel entsprechend geändert.
theo, wie ist denn der effekt von $excessprecision bzw. minfpconstprec unter Linux? Evtl. muss ich den wiki-Artikel nochmals ändern.
theo, wie ist denn der effekt von $excessprecision bzw. minfpconstprec unter Linux? Evtl. muss ich den wiki-Artikel nochmals ändern.
Re: Rechenfehler mit Double-Gleitkommewerten
Habe gerade herausgefunden, dass $excessprecision auf FPC 3.2.2 noch nicht funktioniert hat.wp_xyz hat geschrieben: Mi 5. Apr 2023, 20:16 theo, wie ist denn der effekt von $excessprecision bzw. minfpconstprec unter Linux? Evtl. muss ich den wiki-Artikel nochmals ändern.
Auf 3.3.1 geht es aber!
Der Effekt ist bei deinem Beispiel bei beiden Varianten gleich. Er entspricht dem "double" casting.
Also kommt der Unterschied vermutlich nicht von der "Bittigkeit" oder dem BS, sondern von der FPC Version.
Re: Rechenfehler mit Double-Gleitkommewerten
Ja, ich kann bestätigen, dass das {$excessprecision on} mit FPC3.3.1 auch beim 64-Bit Compiler unter Windows funktioniert. Habe den wiki-Artikel entsprechend nochmals abgeändert...