FloatToStr

  • 1
  • 2
  • Seite 1 von 2
Mathias
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Weingarten - Baden
Beiträge: 315
Dabei seit: 07 / 2003
Betreff:

FloatToStr

 · 
Gepostet: 02.10.2018 - 02:47 Uhr  ·  #1
Version: 5.09.44

Hallo,
irgendwie ist "FloatToStr" kaputt.

StX:= FloatToStr(123.456:4:2)+';';
WriteLn(SerOut, StX);

Als zweite Kommastelle kommt immer ein Punkt.
Siehe Bildausschnitt von Hterm.
Mache ich was falsch, wenn ja was?

Danke
Gruß
Mathias
Der an diesem Beitrag angefügte Anhang ist entweder nur im eingeloggten Zustand sichtbar oder die Berechtigung Deiner Benutzergruppe ist nicht ausreichend.
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: FloatToStr

 · 
Gepostet: 02.10.2018 - 10:42 Uhr  ·  #2
Hallo Mathias,

mir ist früher schon aufgefallen, daß bei manchen xxxToString die Zahl nach dem Doppelpunkt, den Dezimalpunkt beinhaltet bzw die Zahl vor dem Doppelpunkt die Gesamtlänge vorgibt. Mach mal 6:3 ..... 6 gesamt und 3 Nachkomma inkl. Punkt.

Harry
Mathias
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Weingarten - Baden
Beiträge: 315
Dabei seit: 07 / 2003
Betreff:

Re: FloatToStr

 · 
Gepostet: 02.10.2018 - 11:55 Uhr  ·  #3
Danke Harry.

Habe noch eine alte Version gefunden und installiert.
Version: 5.09.00
Mit der geht's.

Sollte mir wirklich angewöhnen, wie Gunther, immer zur geschrieben Software die benutze AVR-Version mit abzuspeichern.
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: FloatToStr

 · 
Gepostet: 02.10.2018 - 12:42 Uhr  ·  #4
Möglicherweise wurde das aber mal geändert wegen Fix64toStr, weil bei dem war es immer ohne Punkt gerechnet. Ich bin mir sicher, daß das früher inkl. Punkt war (hab mich immer gefragt, was das soll :D).

Hast du mal geschaut, ob das wirklich ein Punkt ist? Hex-Ansicht. Ich kenne Terminal-Programme, die bei nicht darstellbaren Zeichen einen Punkt machen.
Mathias
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Weingarten - Baden
Beiträge: 315
Dabei seit: 07 / 2003
Betreff:

Re: FloatToStr

 · 
Gepostet: 02.10.2018 - 13:34 Uhr  ·  #5
Mit der älteren Version geht's genau so wie im "AVRco Compiler-Handbuch" beschrieben.
Die neue Compilerversion baut bei "FloatToStr" Mist.
Auch im Simulator zeigt's den Mist an.
rh
Administrator
Avatar
Geschlecht:
Herkunft: Germany
Alter: 26
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: FloatToStr

 · 
Gepostet: 02.10.2018 - 15:42 Uhr  ·  #6
Hallo Leute,

offensichtlich hat die letzte Änderung im Float die Sache Verschlimmbessert.
Ich nehme die Änderungen jetzt zurück und werde ein neues Update generieren.
Sorry

rolf
Lschreyer
Schreiberling
Avatar
Geschlecht: keine Angabe
Beiträge: 527
Dabei seit: 02 / 2007
Betreff:

Re: FloatToStr

 · 
Gepostet: 26.10.2018 - 16:56 Uhr  ·  #7
Ich habe auch Probleme damit, aber ganz seltsame: Ich habe ein

Write(LCDout, floattostr(-1 * (float(A) / B): 7: 2));

Das generiert normalerweise solche Strings wie -100,20
Aber alle xx male, unregelmäßig, kommt da 1 Stellen mehr hinten raus, meist steht da eine 3, 6 oder 9
Das zerschießt mir das LCD-Layout da die Strings in die nächste Zeile fließen.

Wenn ich aber das mit Umweg über einen String[7] mache geht es:

s:=floattostr(-1 * (float(A) / B): 7: 2);
Write(LCDout, s);

Ich habe die jetzt aktuelle Version 5.09.48
Mit der .44 hatte ich das nicht.


So etwas ähnliches hatte ich schon mal mit padleft und padright.
Wenn ich da

Write(LCDout, padright(s,4)); geschrieben habe kam manchmal Mist raus.

mit einem Umweg über einen String

s2:=padright(s,4)
Write(LCDout, s2);

war es dann wieder korrekt.
rh
Administrator
Avatar
Geschlecht:
Herkunft: Germany
Alter: 26
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: FloatToStr

 · 
Gepostet: 26.10.2018 - 18:46 Uhr  ·  #8
Hallo Louis,

ich befürchte dass da ein Stack/Frame Problem vorliegt.
Dieses erste write hat einen riesigen Frame Verbrauch.
Vermutlich hat die xx.44 da etwas anderst gemacht, aber
solche random Fehler deuten darauf hin.

btw.
man sollte solche (legale) Konstruktionen jedoch vermeiden.

rolf
  • 1
  • 2
  • Seite 1 von 2
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 14   139   153 · Page-Gen-Time: 0.03113s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI