Wertebereich von Variablen
-
lowbyte_ schrieb:
19 Stellen soweit ich mich erinnere.
Das hängt wohl von deiner Fliesskommadarstellung und von der Zahl ab. Bei double sollten es mindestens 10 sein. Genauere Auskunft gibt *_DIG in float.h.
-
Hi
Ja das ist natürlich richtig.
Lowbyte
-
Die Ausgabe erfolgt schon mit %e, es müssten also alle Stellen und der Exponent ausgegeben werden ...
Ergebnis ist exakt 1.0000000e000
-
sega schrieb:
Die Ausgabe erfolgt schon mit %e, es müssten also alle Stellen und der Exponent ausgegeben werden ...
Ergebnis ist exakt 1.0000000e000
Wieviel ist DBL_DIG?
-
Folgendes Programm zB:
#include <stdio.h> #include <float.h> // o wie schlau ist die syntax-hervorhebung int main(void) { double f; double x = 1.308997e-010; f = 1 - x; printf("%d\n%.20lf\n%.20lf\n", DBL_DIG, x, f); return 0; }
Gibt auf meinem System aus:
15 0.00000000013089970000 0.99999999986910026450
-
Das
%.20lf
war etwas ungenau, denn in C99 hat dasl
no effect on a following a, A, e, E, f, F, g, or G conversion specifier. Es ginge genauso auch%.20e
.
-
mngbd schrieb:
Wieviel ist DBL_DIG?
Kein Ahnung, wie kriege ich das raus?
-
sega schrieb:
Kein Ahnung, wie kriege ich das raus?
Versucht, mein Testprogramm auszuführen?
-
Hi
Bitte frag doch mal eine Suchmaschine.
Und führe mal den code aus von "mngbd".
Was hast du den für ein Compiler ?lowbyte
-
Ich benutze den Visual Studio Professional 2010 RC.
Es lag natürlich am Wertebereich.
Was ich euch verschwiegen hatte war die Tatsache, dass sich der Wert für X innerhalb meines Programms auch noch verändert.
Mir ist allerdings nicht aufgefallen, dass es sehr schnell in Richtung 1e-27 ging.
Da hatte ich es noch in der Größenordnung 1e-10 vermutet.
Das von 1 abzuziehen läuft natürlich nicht ...Danke Euch!
-
sega schrieb:
Ich benutze den Visual Studio Professional 2010 RC.
Das ist schade. Es gibt in C99 auch noch
long double
, was typischerweise genauer ist alsdouble
. Nur leider versteht Microsoft kein C99.1 - 1e-27
ist aber sehr nahe an 1, für solche Zahlen solltest du vermutlich eine externe Zahlen-Bibliothek verwenden.