Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Single / Double / Extended - rechnen mit Gleitkommawerten (https://www.delphipraxis.net/211918-single-double-extended-rechnen-mit-gleitkommawerten.html)

lxo 22. Nov 2022 07:03

Single / Double / Extended - rechnen mit Gleitkommawerten
 
Hallo zusammen,

wieso entsteht aus einer Rechnung mit zwei Single Variablen ein Extended?

Delphi-Quellcode:

uses
 .., System.Math, System.Rtti;

..
var
  lSingle1: Single;
  lSingle2: Single;
  lInteger: Integer;
  lValue: TValue;
begin
  lSingle1 := 13.5;
  lSingle2 := 0.9;


  lInteger := Ceil( lSingle1 / lSingle2); // Ergibt 16 da mit Extended gearbeitet wird.
  lInteger := Ceil( Single( lSingle1 / lSingle2)); // Ergibt 15 da mit Single gearbeitet wird.

  lValue := ( lSingle1 / lSingle2);
  Showmessage( lValue.TypeInfo.Name);

Sinspin 22. Nov 2022 09:32

AW: Single / Double / Extended - rechnen mit Gleitkommawerten
 
Wieso ist die Erde rund?

Nichts passiert aus Zufall.

Ein schlauer Kopf hat also wohl mal festgelegt das bei bestimmten Eingangstypen ein bestimmter Ausgangstyp verwendet wird.

himitsu 22. Nov 2022 09:39

AW: Single / Double / Extended - rechnen mit Gleitkommawerten
 
Die FPU/CPU rechnet nunmal immer mit Extended.
Datenformat (Speicherformat) vs. Arbeitsformat.

Extended war auch niemals als Speicherformat vorgesehen (drum implementieren andere Programmiersprachen es nicht direkt)
und sollte normal immer nur für zischenergebnisse von Berechnungen verwendet werden.

Wieso sollten die Entwickler nutzlos mehrmals Berechnungsfunktionen und die Hardware einbauen, wenn die große Berechnung ausreicht und man anschließend wieder runterrechnen abrunden kann, falls nötig.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz