Autor Beitrag
HenryHux
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51
Erhaltene Danke: 5



BeitragVerfasst: Mo 20.12.10 17:41 
nicht getestet aber
ausblenden Quelltext
1:
anzahl:= length(floattostr(zahl)) - pos(',',floattostr(zahl));					

sollte funktionieren.

Für diesen Beitrag haben gedankt: HenryHux
HenryHux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: Mo 20.12.10 17:45 
Danke, klappt, doch er zählt das Komma bzw den Punkt mit,

also
ausblenden Delphi-Quelltext
1:
anzahl:= (length(floattostr(zahl)) - pos(',',floattostr(zahl))-1);					


Lg
gnomecoder
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51
Erhaltene Danke: 5



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: 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:
ausblenden 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) = 0then
      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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: 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



BeitragVerfasst: Di 21.12.10 20:34 
- Nachträglich durch die Entwickler-Ecke gelöscht -
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: 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.