Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi System.Frac / System.Int / Math.SimpleRoundTo - komische Ergebnisse (https://www.delphipraxis.net/213326-system-frac-system-int-math-simpleroundto-komische-ergebnisse.html)

Bodenseematze 13. Jul 2023 12:21

AW: System.Frac / System.Int / Math.SimpleRoundTo - komische Ergebnisse
 
Zitat:

Zitat von Andreas13 (Beitrag 1524465)
Frac(..) ist in System.pas deklariert:
Delphi-Quellcode:
function Frac(const X: Extended): Extended;
begin
  Result := X - Int(X);
end;

Bei mir nicht (direkt); da steht dann folgendes drin:
Delphi-Quellcode:
procedure      _FRAC;
asm
        FLD    ST(0)
        SUB    ESP,4
        FNSTCW [ESP].Word    // save
        FNSTCW [ESP+2].Word  // scratch
        FWAIT
        OR     [ESP+2].Word, $0F00  // trunc toward zero, full precision
        FLDCW  [ESP+2].Word
        FRNDINT
        FWAIT
        FLDCW  [ESP].Word
        ADD    ESP,4
        FSUB
end;
wie der dann zu "Frac" (ohne Unterstrich am Anfang) kommt, weiß ich nicht...

himitsu 13. Jul 2023 13:28

AW: System.Frac / System.Int / Math.SimpleRoundTo - komische Ergebnisse
 
Vieles Assemblerzeugs wurde "inzwischen" abgeschafft und druch Pure-Pascal ersetzt, bzw. mit alternativen Varianten versehen,

wegen dem 64 Bit-Compiler (Windows)
und auch für die anderen Platformen ala Linux, Android und iOS/OSX.

jaenicke 13. Jul 2023 13:57

AW: System.Frac / System.Int / Math.SimpleRoundTo - komische Ergebnisse
 
Zitat:

Zitat von Bodenseematze (Beitrag 1524514)
Zitat:

Zitat von jaenicke (Beitrag 1524477)
Bei mir kommen unter Delphi 7 jedenfalls die erwarteten Ergebnisse heraus.

Wie oben gesagt, das hängt tatsächlich von den berechneten Werten ab - mit manuellen, hart kodierten Werten kommen bei mir (meistens :wink:) auch die erwarteten Ergebnisse zurück.

Wie dem auch sei - ich bin aktuell ganz zufrieden mit meinen Lösungen und Danke Euch allen für Eure Hilfestellungen! :thumb:

Du könntest auch die binären Daten, sprich die einzelnen Bytes, zeigen. Dann ließe sich das auch ohne die Rechnung zu kennen reproduzieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:52 Uhr.
Seite 3 von 3     123   

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-2025 by Thomas Breitkreuz