int total=0, number=0;
float percentage=0.0;
percentage=(number/total)*100;
printf("%.2f", percentage);
Wenn der Wert der Zahl 50 ist und die Summe 100 ist, sollte ich 50,00 als Prozentsatz erhalten, und das ist, was ich will. Aber ich bekomme immer 0.00 als Antwort und habe viele Änderungen an den Typen versucht, aber sie haben nicht funktioniert.
Weil die int Teil von 50/100 (= 0,5) ist 0
– Michael
23. November 2012 um 13:39 Uhr
Daniel Fischer
Ganzzahlige Division schneidet ab, also (50/100) ergibt 0. Sie können umwandeln float (besser double) oder mit multiplizieren 100.0 (zum double Präzision, 100.0f zum float Präzision) zuerst,
Da Gleitkomma-Arithmetik nicht assoziativ ist, sind die Ergebnisse von 100.0*number/total und (double)number/total * 100 kann etwas anders sein (dasselbe gilt für float), aber es ist äußerst unwahrscheinlich, dass die ersten beiden Stellen nach dem Komma beeinflusst werden, daher spielt es wahrscheinlich keine Rolle, welchen Weg Sie wählen.
Ersteres führt die Berechnung mit doppelter Genauigkeit durch, letzteres mit einfacher Genauigkeit. Sie sind also möglicherweise nicht gleichwertig. Verwenden 100.0f um ein Float-Literal zu erhalten.
– Ludin
23. November 2012 um 14:23 Uhr
Ganzzahldivision in C schneidet das Ergebnis so ab 50/100 werde dir geben 0
Wenn Sie das gewünschte Ergebnis erzielen möchten, versuchen Sie Folgendes:
((float)number/total)*100
oder
50.0/100
Nein, weil Sie den Ausdruck mit ganzen Zahlen machen, also dividieren Sie die ganze Zahl 50 durch die ganze Zahl 100, das ergibt die ganze Zahl 0. Geben Sie einen von ihnen zu a um float und es sollte funktionieren.
Sie führen ganzzahlige Arithmetik durch, also ist das Ergebnis korrekt. Versuchen
percentage=((double)number/total)*100;
Übrigens die %f erwartet ein double kein float. Durch reines Glück wird das hier umgerechnet, damit es gut klappt. Aber im Allgemeinen würden Sie meistens verwenden double als Fließkommatyp in C heutzutage.
Ich multipliziere routinemäßig mit 1,0, wenn ich Fließkommazahlen haben möchte, das ist einfacher, als sich an die Regeln zu erinnern.
VIELÜberlauf
Dies sollte Ihnen das gewünschte Ergebnis liefern.
double total = 0;
int number = 0;
float percentage = number / total * 100
printf("%.2f",percentage);
Beachten Sie, dass der erste Operand ein Double ist
Lundin
Ändern Sie Ihren Code in:
int total=0, number=0;
float percentage=0.0f;
percentage=((float)number/total)*100f;
printf("%.2f", (double)percentage);
13646600cookie-checkWie konvertiere ich int in C in Float?yes
Weil die
int
Teil von 50/100 (= 0,5) ist 0– Michael
23. November 2012 um 13:39 Uhr