Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Integertyp mit nur 2 Nachkommastellen


pyto - Mo 03.05.10 17:13
Titel: Integertyp mit nur 2 Nachkommastellen
Hi,
Ich suche einen Typ in Delphi der nur genau 2 Nachkommastellen kennt und damit Werte wie 1234,56(€) oder (und das ist wichtig) 1234,50(€)ausgeben kann. Er soll also bei einer NKMST noch eine zweite NKMST mit Wert 0 anfügen und es bei Zwei NKMST lassen.

Danke :)


FinnO - Mo 03.05.10 17:22

wie wäre es mit runden?


Delphi-Quelltext
1:
2:
3:
4:
var myval : single;
begin
  myval := trunc(myval*100)/100
end;


die null musst du dann noch selbst anfügen.


Xion - Mo 03.05.10 17:43

oder nimm einen Integer und teile ihn vor der Anzeige durch 100. Frage mich ob Delphi es erlaubt solche Typen selbst zu erstellen...vermutlich eher nicht, höchstens ne Klasse (umständlich in der Bedienung).

//Edit: achso, um die Null gehts...


Delphi-Quelltext
1:
str:=inttostr(trunc(myval))+','+inttostr((myval - trunc(myval))*100)                    

(oder so ähnlich ^^)

Schreib dir ne procedure dafür. Es gibt aber auch floattostr mit vielen Einstellungsmöglichkeiten (kein Experte dafür ist)


Martok - Mo 03.05.10 18:07

WTF?


Delphi-Quelltext
1:
format('%.2f',[MyNumber])                    


platzwart - Mo 03.05.10 20:24

Gibts für Währungen nicht extra den Typ "Currency"???


elundril - Di 04.05.10 08:52

Theoretisch ja, aber auch dieser kann mehr als 2 Nachkommastellen haben. Der Vorteil von Currency ist, das es genauer ist als andere Gleitkommatypen.

lg elundril


Sinspin - Di 04.05.10 10:45

Currency ist ein Integer. Also intern werden die Zahlen als Integer behandelt. Bei allen Umwandlungen wird jedoch mit 4 Nachkommastellen gearbeitet (Währungsformat), bei Ausgaben werden davon aber nur 2 dargestellt.
Alle Rechenoperationen mit diesem Typen folgen den Regeln für die Berechnungen von Währungswerten. Die von Gleitkommazahlen bekannten Ungenauigkeiten treten hier nicht auf.


Allesquarks - Di 04.05.10 23:14

Das kommt aber auch alle Jahre mal hoch. Nur zur Richtigkeit currency wird intern im Coprozessor gerechnet und erreicht damit relativ natürlich auch keine höhere Genauigkeit als Gleitkommatypen. Vielmehr bildet es die Korrektheit des Coprozessors für ganze Zahlen bis 64Bit um 4 Größenordnungen zu kleineren Werten ab.