[Linux/c] atof() funktioniert nicht

Hallo,

ich habe folgendes Programm:

#include
#include

void main()
{
 printf("%lf",atof("2.5"));
}

wenn ich es nun kompiliere und starte erhalte ich immer das folgende falsche Ergebnis:

-1.998314

ich habe schon mit anderen Werten , statt „2.5“ versucht, bekomme aber das gleiche Ergebnis.
Kann es an einer fehlerhaften Version von libm.a liegen ?
Ich benutze die libc , die bei der SuSE 6.3 - Distribution dabei ist.
Oder ist am Programm etwas falsch?

Gruß,
Frédéric

Hi Elfredo :wink:))

Das „%lf“ ist nur bei der Eingabe definiert. Bei der Ausgabe musst du immer „%f“ schreiben, da lt. Standardkonversion float automatisch in double umgewandelt wird. Daher muss es nicht

printf("%lf",atof(„2.5“));

sondern

printf("%f",atof(„2.5“));

heißen …

cu Stefan.

Hallo Stefan,

danke ,aber so klappt es auch nicht. :frowning:

Frédéric

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Elfredo :wink:))

Das wundert mich jetzt. Die Version mit „%f“ läuft sicher, ein guter C-Compiler wird auch mit „%lf“ das richtige Ergebnis liefern (Visual C++ tut das z.B.). Daher vermute ich, dass du vielleicht falsch compilierst! Bindest du denn die Mathe-Library überhaupt mit ein? Tippst du also:

gcc -lm blabla.c

oder hast du das „-lm“ vielleicht vergessen?

cu Stefan.