Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Currency zu Integer (https://www.delphipraxis.net/156823-currency-zu-integer.html)

Ast85 16. Dez 2010 09:33

Delphi-Version: 2007

Currency zu Integer
 
Hallo zusammen,

ich habe folgendes (Anfänger-)Problem:

Ich erhalte aus einer Funktion einen Wert zurück (eigentliche Eingabe bis zu 12 Ziffern, hier 111222333999), nämlich diesen: 1,11222334e+11.
Diesen Wert möchte ich nun in einer Integer-Variablen speichern und zwar als 111222333999.
Gibt es da vielleicht eine Möglichkeit, die ich noch nicht gefunden habe?

Ich habe folgendes probiert:
in der Variable curr steht 1,11222334e+11

varstr := floattostr(curr); --> varstr = '111222333999'
varint := strtoint(varstr); --> varint = 0

Wie bekomme ich meinen gewünschten Wert in die Integer-Variable?

Vielen Dank schon mal!

VG Ast85

Koolance 16. Dez 2010 09:37

AW: Currency zu Integer
 
Die Zahl ist zu groß für einen Integer, probier es mal mit einem Longint.

Koolance 16. Dez 2010 09:45

AW: Currency zu Integer
 
Brauchst sogar einen int64.

Code:
procedure TForm1.Button1Click(Sender: TObject);
var
  a1:int64;
begin
  a1:=strtoint64('111222333999');

  showmessage(inttostr(a1));

end;

Ast85 16. Dez 2010 09:49

AW: Currency zu Integer
 
Mit int64 klappts! :-D

Vielen Dank für die schnelle Hilfe!!

DataCool 16. Dez 2010 09:50

AW: Currency zu Integer
 
LongInt und Integer, sind in Delphi momentan die gleiche Größe: 32 Bit, mit Vorzeichen

Verwende alternativ:
- Cardinal(32 Bit, ohne Vorzeichen)
- LongWord(32 Bit, ohne Vorzeichen)
- Int64(64 Bit, mit Vorzeichen)
- UInt64(64 Bit, ohne Vorzeichen)

Greetz Data

Edit: War wieder jemand schneller ....

himitsu 16. Dez 2010 11:24

AW: Currency zu Integer
 
Zitat:

Zitat von Koolance (Beitrag 1068829)
Die Zahl ist zu groß für einen Integer, probier es mal mit einem Longint.

Delphi = 32 Bit, also Integer = LongInt

Zitat:

Verwende alternativ:
- Cardinal(32 Bit, ohne Vorzeichen)
- LongWord(32 Bit, ohne Vorzeichen)
Da die Zahl 111222333999, in der Zweierkomplementdarstellung 45 Bit ohne Vorzeichen und 46 Bit mit Vorzeiten belegt, sind auch Cardinal und LongWord ein bissl zu klein. :stupid:

PS: Selbst in Single paßt diese Zahl nicht vollständig rein, auch wenn sie im Wertebereich des Single liegen mag, aber Aufgrund der Genauigkeit würden wohl die letzten 3-4 Dezimalstellen verfälscht sein.


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