Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Nachkommastellen zählen
HenryHux - Mo 20.12.10 17:19
Titel: Nachkommastellen zählen
Hi,
leider nichts gefunden was mir hilft, ich versuche die Nachkommastellen einer Gleitkommazahl zu ermitteln.
Length geht ja nicht, mit frac bekomme ich auch wieder eine Nachkommazahl wieder. (Z.b frac(4.3)=0.3)
Wisst ihr da was?
Lg
gnomecoder - Mo 20.12.10 17:41
nicht getestet aber
Quelltext
1:
| anzahl:= length(floattostr(zahl)) - pos(',',floattostr(zahl)); |
sollte funktionieren.
HenryHux - Mo 20.12.10 17:45
Danke, klappt, doch er zählt das Komma bzw den Punkt mit,
also
Delphi-Quelltext
1:
| anzahl:= (length(floattostr(zahl)) - pos(',',floattostr(zahl))-1); |
Lg
gnomecoder - Mo 20.12.10 17:52
Du möchtest wissen wieviele Stellen deine Zahl nach dem Komma hat?
Beispiel:
Zahl: 1234,567
length liefert 8
pos liefert 5
Ergebnis sollte 3 sein^^
Oder habe ich da was falsch verstanden? :?
HenryHux - Mo 20.12.10 18:07
Genau Ahnung davon habe ich leider nicht, habe noch nicht mit Pos gearbeitet, kann nur sagen dass es nicht so geklappt hat, wie es sollte.
So habe ich es aber hinbekommen, dass er auch bei Zahlen ohne Komma richtig ausgibt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| function ZähleNachkommazahlen(zahl : Real) : Integer; function zählestellen(zahl : Real) : integer; begin if not (Frac(zahl) = 0) then result:= (length(floattostr(zahl)) - pos(',',floattostr(zahl))-1) else Result := Length(FloatToStr(zahl)); end; begin Result := zählestellen(zahl)-length(IntToStr(trunc(zahl))); end; |
Lg
elundril - Mo 20.12.10 18:36
warum nutzt du nicht length in zusammenhang mit frac und ziehst 2 ab? (zwei wegen der 0 und dem Komma)
lg elundril
Delete - Di 21.12.10 20:34
- Nachträglich durch die Entwickler-Ecke gelöscht -
delfiphan - Di 21.12.10 21:07
Keine gute Idee. "," ist abhängig von den Systemeinstellungen; ein Float kann auf verschiedene Arten dargestellt sein (z.B. 1,3e8); und die korrekte Anzahl Stellen ist nicht unbedingt ermittelbar, z. B. bei irrationalen Zahlen oder rationalen Zahlen mit periodischem Dezimalbruch.
Wofür musst du diese Angabe haben? Die Zahl ist total spezifisch für das Dezimalsystem. Wenn es darum geht, die Ausgabe zu formattieren, dann kannst du direkt Format dafür verwenden.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!