amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > gcc,printf() und float [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

19.09.2002, 15:25 Uhr

Kronos
Posts: 1168
Nutzer
Wie der Titel schon andeutet habe ich ein Problem mit der Ausgabe von
Fliesskommazahlen.

Wenn ich "print("%4.1f\n",f);" schreibe erwarte ich "1234.1" als Ergebnis,
aber nein "%4.1f" ist was ich kriege X( Auch wenn ich nur "%f" nehme,oder
fprint()/sprintf() nutze habe ich das gleiche Problem, mit StormC4 geht
das Ganze dann wieder ...

Compiliert wird mit dem aktuellen "stable" Geek-Gadgets und den Optionen
noixemul,68030,68881.

MfG
Kronos
--

Only the good die young all the evil seem to live forever

[ - Antworten - Zitieren - Direktlink - ]

19.09.2002, 16:16 Uhr

gni
Posts: 1106
Nutzer
Zitat:
Original von Kronos:
Wie der Titel schon andeutet habe ich ein Problem mit der Ausgabe von
Fliesskommazahlen.

Wenn ich "print("%4.1f\n",f);" schreibe erwarte ich "1234.1" als Ergebnis,
aber nein "%4.1f" ist was ich kriege X( Auch wenn ich nur "%f" nehme,oder
fprint()/sprintf() nutze habe ich das gleiche Problem, mit StormC4 geht
das Ganze dann wieder ...

Compiliert wird mit dem aktuellen "stable" Geek-Gadgets und den Optionen
noixemul,68030,68881.


Wie waers mit Lesen der Dokumentation? Wenn Du floats/double willst, mußt Du auch -lm beim Linkern benutzen....

[ - Antworten - Zitieren - Direktlink - ]

19.09.2002, 16:44 Uhr

Kronos
Posts: 1168
Nutzer
@gni
Nette Idee :glow: , hilft nur leider nicht :D :D X(

Das Programm kann mit floats rechnen, und das funktioniert auch einwandfrei
da ich ja auch für 68881 compiliere, nur wenn ich es dann mit printf() und
Co ausgeben will hab ich Probleme und zwar unabhängig von deinem Vorschlag.

MfG
Kronos
--

Only the good die young all the evil seem to live forever

[ - Antworten - Zitieren - Direktlink - ]

19.09.2002, 23:03 Uhr

Banger
Posts: 12
Nutzer
Moin, moin Kronos!

Ich habe es mit dem gcc2.95.3-4 ausprobiert und es hat geklappt.
Hier ist der Sourcecode:

*******************
#include <iostream>
#include <cstdio>

int main( void )
{
float f = 1234.1;
printf( "%4.1f\n", f );

f = 1002.4323;
printf( "%4.1f\n", f );

cout << f << endl;

return 0;
}
*******************

Ich übersetzt mit:
g++ -o test main.cpp -noixemul


Ausgabe von test:

1234.1
1002.4
1002.43

Wenn ich den C++ Kram weglasse und mit dem gcc übersetze
dann bekomme ich auch die Ausgabe: %4.1f!

Du kannst aber mit dem g++ auch Sourcecode übersetzen der
aus reinem ANSI C ist und damit geht es.

Viel Spaß beim Kompilieren.

Banger :boing:

[ - Antworten - Zitieren - Direktlink - ]

20.09.2002, 09:52 Uhr

tokai
Posts: 1071
Nutzer

ich kenne den gcc zwar nicht, aber vielleicht verwaltet er unter bestimmten Umständen die floats intern als double (beim SAS/C gibts da diesbzgl. auch eine Option, wenn ich micht recht erinnere, Präzision: "DOUBLE" bzw. "MIXED") und gcc-printf kommt dann damit nicht klar.

Probier dochmal eine Ausgabe mit printf("%lf",f); ... vielleicht klappt es ja dann.

--
http://www.christianrosentreter.de

[ - Antworten - Zitieren - Direktlink - ]

20.09.2002, 15:50 Uhr

Kronos
Posts: 1168
Nutzer
@tokai

Kein Effekt !!

@Banger
Yo dat wars :D

Wenn mir jetzt noch einer erklären kann was C++ mit floats ind printf() zutun hat :dance3:

Aba hupsach ät lüpt :rotate:

MfG
MfG
Kronos
--

Only the good die young all the evil seem to live forever

[ - Antworten - Zitieren - Direktlink - ]

26.09.2002, 14:09 Uhr

gni
Posts: 1106
Nutzer
Zitat:
Wenn mir jetzt noch einer erklären kann was C++ mit floats ind printf() zutun hat :dance3:

Du machst was falsch... Nochmal für Dich: Wenn Du mit -noixemul linkst, dann mußt Du -lm benutzen wenn Du printf() mit Float-Support willst!


[ Dieser Beitrag wurde von gni am 26.09.2002 editiert. ]

[ - Antworten - Zitieren - Direktlink - ]

26.09.2002, 15:21 Uhr

Kronos
Posts: 1168
Nutzer
Zitat:
Original von gni:
Zitat:
Wenn mir jetzt noch einer erklären kann was C++ mit floats ind printf() zutun hat :dance3:

Du machst was falsch... Nochmal für Dich: Wenn Du mit -noixemul linkst, dann mußt Du -lm benutzen wenn Du printf() mit Float-Support willst!


[ Dieser Beitrag wurde von gni am 26.09.2002 editiert. ]


Was aber nicht funktioniert hat ... :shock2: :shock2: :shock2:

MfG
Kronos
--

Only the good die young all the evil seem to live forever

[ - Antworten - Zitieren - Direktlink - ]

26.09.2002, 17:08 Uhr

gni
Posts: 1106
Nutzer
Zitat:
Zitat:
Du machst was falsch... Nochmal für Dich: Wenn Du mit -noixemul linkst, dann mußt Du -lm benutzen wenn Du printf() mit Float-Support willst!
Was aber nicht funktioniert hat ... :shock2: :shock2: :shock2:

Wie genau sah das Linken aus? Bitte die exakte Kommandozeile.

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > gcc,printf() und float [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.