Tja, man lernt halt nie aus
Also, ich hab dann auch mal die sprintf-Fkt. benutzt und komme auf das gleiche Resultat.
dtostrf() tut das was ich will und daher hab ich diese Fkt in translate.c benutzt (die Fkt. ist aber kein Standard, sondern WinAVR spezifisch).
Da man sich ja die Quellen von sprintf ansehen kann, hab ich da mal nachgesehen...
/*
* This file can be compiled into more than one flavour. The default
* is to offer the usual modifiers and integer formatting support
* (level 2). Level 1 maintains a minimal version that just offers
* integer formatting, but no modifier support whatsoever. Level 3 is
* intented for floating point support.
*/
Also, normalerweise ist "
Level 2" ohne Floatingpoint-Support als lib eingebunden und
damit fehlt %f
Ich benutze normalerweise das AVR-Studio. Dort kann man in den Projektoptionen auch die verwendeten Bibliotheken einstellen. Es werden einige angeboten. Unter anderem auch
libprintf_flt.a Auswählen und neu übersetzen/linken hat aber nichts gebracht
Hat jemand eine Ahnung wie man den floatingpoint-Support in printf einbindet
Ansonsten tut es
dtostrf() ja eigentlich ...
Gruß
wil
P.S.:
Aus "ow_array[0] / 10" macht der Compiler ein Integer und "ow_array[0] / 10.0" ergibt double.
Das kann ich so nicht aufrecht erhalten. Hab mich eigentlich schon beim schreiben etwas verwundert. Normalerweise sollte eine Berechnung, die nicht mit den Ausgangsgrößen auskommt den nächst größeren Speicherplatz für die Variablen nutzen. (Integer)/10 sollte also auch double ergeben genauso wie (integer)/10.0