Autor |
Beitrag |
HenryHux
      
Beiträge: 542
Erhaltene Danke: 33
Windows 7 Premium
Delphi XE, Eclipse
|
Verfasst: Mo 20.12.10 17:19
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
      
Beiträge: 51
Erhaltene Danke: 5
|
Verfasst: Mo 20.12.10 17:41
nicht getestet aber
Quelltext 1:
| anzahl:= length(floattostr(zahl)) - pos(',',floattostr(zahl)); |
sollte funktionieren.
Für diesen Beitrag haben gedankt: HenryHux
|
|
HenryHux 
      
Beiträge: 542
Erhaltene Danke: 33
Windows 7 Premium
Delphi XE, Eclipse
|
Verfasst: 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
      
Beiträge: 51
Erhaltene Danke: 5
|
Verfasst: 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 
      
Beiträge: 542
Erhaltene Danke: 33
Windows 7 Premium
Delphi XE, Eclipse
|
Verfasst: 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
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: 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
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 21.12.10 20:34
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
delfiphan
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: 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.
|
|