Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi division von zahlen > 2200000000? (https://www.delphipraxis.net/76347-division-von-zahlen-2200000000-a.html)

frielix 2. Sep 2006 22:08


division von zahlen > 2200000000?
 
Hi,
da meines Wissens Integerwerte eine Obergrenze von ca. 2150000000 haben, in meinem Programm aber möglicherweise Variablen mit Werten darüber belegt werden, habe ich mir gedacht, dass ich für die betroffenen Variablen nicht den Typen Integer sondern Real verwende.
Alles schön und gut, aber wenn ich bei dem Code
Delphi-Quellcode:
x := StrToFloat(eins) div xz;
ankomme meint der aber "[Fehler] Unit1.pas(307): E2015 Operator ist auf diesen Operandentyp nicht anwendbar".

Gibts da irgend eine möglichkeit um das Problem zu lösen??

Danke im Vorraus :wink:

3_of_8 2. Sep 2006 22:12

Re: division von zahlen > 2200000000?
 
Nicht div, sondern / verwenden, wenn dus gerundet haben willst evtl. mit trunc().

JasonDX 2. Sep 2006 22:16

Re: division von zahlen > 2200000000?
 
Delphi-Referenz durchsuchendiv ist der Operator fuer die Ganzzahldivision - natuerlich nur auf Ganzzahlen anwendbar, was ein real (=Gleitkommazahl) nicht ist.
Loesung: Int64 ist doppeltso breit wie ein Integer - das sollte reichen ;)

greetz
Mike

Meflin 2. Sep 2006 22:19

Re: division von zahlen > 2200000000?
 
Alternativ kkannst du vielleicht auch eine der zahlreich vorhandenen Hier im Forum suchenBigInt Units verwenden, was den Vorteil hätte dass du verglichen mit Float-Typen eine höhere Genauigkeit hast, und auch keine Obergrenze was die Werte angeht.


frielix 2. Sep 2006 22:21

Re: division von zahlen > 2200000000?
 
Zitat:

Zitat von JasonDX
Delphi-Referenz durchsuchendiv ist der Operator fuer die Ganzzahldivision - natuerlich nur auf Ganzzahlen anwendbar, was ein real (=Gleitkommazahl) nicht ist.
Loesung: Int64 ist doppeltso breit wie ein Integer - das sollte reichen ;)

greetz
Mike

Danke, ich hab das jetzt aber einmal alles mit Real-Werten und die werden gerundet. Wenn ich mal Zeit und Lust habe kann ich das ja nochmal ändern :-D

Und danke für die schnellen Antworten!


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:12 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