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 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: 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 , hilft nur leider nicht 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 [ - 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 Wenn mir jetzt noch einer erklären kann was C++ mit floats ind printf() zutun hat Aba hupsach ät lüpt 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: 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: Was aber nicht funktioniert hat ... 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:Was aber nicht funktioniert hat ... 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. |