Ich versuche, eine Zahl mit zwei Dezimalstellen printf()
wie folgt zu schreiben :
#include <cstdio>
int main()
{
printf("When this number: %d is assigned to 2 dp, it will be: 2%f ", 94.9456, 94.9456);
return 0;
}
Wenn ich das Programm starte, erhalte ich folgende Ausgabe:
# ./printf
When this number: -1243822529 is assigned to 2 db, it will be: 2-0.000000
Warum ist das so?
Vielen Dank.
Antworten:
Was Sie wollen, ist
%.2f
nicht2%f
.Vielleicht möchten Sie auch Ihre
%d
durch a ersetzen%f
;)#include <cstdio> int main() { printf("When this number: %f is assigned to 2 dp, it will be: %.2f ", 94.9456, 94.9456); return 0; }
Dies wird Folgendes ausgeben:
Eine vollständige Beschreibung der Formatierungsoptionen für printf finden Sie hier:
printf
quelle
Verwenden Sie:
"%.2f"
oder Variationen davon.In der POSIX- Spezifikation finden Sie eine maßgebliche Spezifikation der
printf()
Formatzeichenfolgen. Beachten Sie, dass POSIX-Extras von der C99-Kernspezifikation getrennt werden. Es gibt einige C ++ - Websites, die in einer Google-Suche angezeigt werden, aber einige haben zumindest einen zweifelhaften Ruf, gemessen an den Kommentaren, die an anderer Stelle auf SO zu sehen sind.Da Sie in C ++ codieren, sollten Sie dies wahrscheinlich vermeiden
printf()
und seine Verwandten .quelle
Zum
%d
Teil siehe hierzu Wie funktioniert dieses Programm? und für Dezimalstellen verwenden%.2f
quelle
Versuchen Sie es mit einem Format wie% d.% 02d
int iAmount = 10050; printf("The number with fake decimal point is %d.%02d", iAmount/100, iAmount%100);
Ein anderer Ansatz besteht darin, cast it to double einzugeben, bevor Sie es mit% f wie folgt drucken:
printf("The number with fake decimal point is %0.2f", (double)(iAmount)/100);
Meine 2 Cent :)
quelle