Hallo,
ich bekomme Gleitkommawerte als ASCII-Zeichen übergeben und soll sie in
float-Variablen ablegen. Hierfür die Funktion strtof() zu verwenden
scheidet in meinem Fall aus.
Aufgrund hoher Wertebereiche meinte mein Chef ich soll mir die Werte
(z.B. durch atof() ) als double-Werte liefern lassen.
Mir ist klar, dass ein einfaches
Float_wert = (float) double_wert
dies tun würde. Was ich nur nicht verstehe ist, dass doch bei einem
double-Wert überhaupt keine Nachkommastellen vorhanden sind. Wie soll
ich denn da jemals den richtigen Wert erhalten?
brechpunkt schrieb:> dies tun würde. Was ich nur nicht verstehe ist, dass doch bei einem> double-Wert überhaupt keine Nachkommastellen vorhanden sind.
Du verwechselst offenbar "double" (double precision floating point) mit
etwas anderem.
float = wert mit komma, einfache genauigkeit, 16 bit
double = wert mit komma, doppelte Genauigkeit, 32 bit
byte, short, int, long = wert ohne Komma, 8,16,32,64 bit lang (x86)
>Übe Dich in Festkomma-Arithmetik - bis zum brechen ...
Bist du es verstanden hast, sollte genügen :)
Gruß Jonas
Jonas Biensack schrieb:> float = wert mit komma, einfache genauigkeit, 16 bit> double = wert mit komma, doppelte Genauigkeit, 32 bit
Und wenn du das jeweils mit 2 multiplizierst, dann stimmt es sogar.
Zumindest der Länge nach, wenngleich nicht in der Bedeutung.
hmmmm.... verdammt. Ich habe nicht geschnallt, dass double ebenfalls
ein Fließkomma-Wert ist.
Ich danke euch.
Jedoch allein schon das Gespärch mit meinem Chef hat mir wieder gezeigt,
dass es oft ein großer Schuss nach hinten ist, wenn man den Chef in der
Arbeit fragt. Um zu vermeiden danach nicht als gänzlicher Vollidiot da
zu stehen, investiert man (ich) lieber doppelt so viel Zeit um in Google
zu recherchieren oder in Foren zu fragen.
Geht es da eigentlich nur mir so?
Auch wenn es stimmt, dass das zu den basics gehört, möchte man solchen
Gesprächen doch lieber aus dem Weg gehen. Und erst Recht bei der
Gehaltsverhandlung hat man keine Lust sich soetwas noch mal anhören zu
müssen.
A. K. schrieb:> Wenn das Zeug schon in Form von ASCII-Fliesskommawerten reinkommt, dann> ist das Festkommaarithmetik eher der falsche Ansatz.
Nichts hindert Dich daran, aus einem String z.B. ein long zu machen.
A. K. schrieb:> Wenn das Zeug schon in Form von ASCII-Fliesskommawerten reinkommt, dann> ist das Festkommaarithmetik eher der falsche Ansatz.
Sorry, seh ich komplett anders. Grad dann ist es einfach, die
Zeichenkette gleich als Festkommazahl abzulegen.
Nur falls du vor hast, wissenschaftliche Berechnungen durchzuführen,
wären Fließkommazahlen unter Umständen sinnvoll. (Ob ein Mikrocontroller
für wissenschaftliche Berechnungen die richtige Wahl ist, sei mal
dahingestellt.)
Für alles andere, insbesondere für zu verarbeitende Messwerte, eignen
sich Festkommazahlen deutlich besser. Vor allem lassen sie sich um ein
Vielfaches schneller verarbeiten. Und man vermeidet so tolle
Fließkommaeffekte wie "1,2 / 3 = 0,399999999".
Gelbe Wanderameise schrieb:> Nichts hindert Dich daran, aus einem String z.B. ein long zu machen.
Solange man nichts über die einlaufenden Zahlen weiss, ausser dass sie
in Fliesskommadarstellung vorliegen, kann man guten Gewissens keine
Festkommadarstellung empfehlen.
Eine eigene Frage?
Dieser Thread ist über 14 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.