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 prozentual erhalten. Ich bekomme jedoch immer 0.00 als Antwort und habe auch viele Änderungen an den Typen versucht, aber es gelang nichts.
Integer-Division wird abgeschnitten, so dass (50/100)
0 ergibt. Sie können zuerst in float
(besser double
) oder mit 100.0
(für double
-Genauigkeit, 100.0f
für float
-Genauigkeit) konvertieren
double percentage;
// ...
percentage = 100.0*number/total;
// percentage = (double)number/total * 100;
oder
float percentage;
// ...
percentage = (float)number/total * 100;
// percentage = 100.0f*number/total;
Da die Fließkomma-Arithmetik nicht assoziativ ist, können die Ergebnisse von 100.0*number/total
und (double)number/total * 100
geringfügig abweichen (dies gilt auch für float
), es ist jedoch äußerst unwahrscheinlich, dass sie die ersten beiden Stellen nach dem Dezimalzeichen beeinflussen du wählst.
integer Division in C schneidet das Ergebnis ab, so dass 50/100
Ihnen 0
Wenn Sie das gewünschte Ergebnis erhalten möchten, versuchen Sie Folgendes:
((float)number/total)*100
oder
50.0/100
Nein, weil Sie den Ausdruck mit Ganzzahlen ausführen, teilen Sie die Ganzzahl 50 durch die Ganzzahl 100 auf, die zur Ganzzahl 0 führt. Geben Sie einen von ihnen in eine float
und in ihn um sollte arbeiten.
Ich multipliziere routinemäßig mit 1.0, wenn ich Fließkommazahlen haben möchte, es ist einfacher als sich an die Regeln zu erinnern.
Sie führen eine Ganzzahlarithmetik durch, daher ist das Ergebnis korrekt. Versuchen
percentage=((double)number/total)*100;
Übrigens erwartet der %f
eine double
und keine float
. Durch reines Glück wird das hier umgewandelt, also klappt es gut. Im Allgemeinen würden Sie double
heutzutage meistens als Gleitkommatyp in C verwenden.
Dies sollte funktionieren, indem es auf 2 Punkte gerundet wird
int a=53214
parseFloat(Math.round(a* 100) / 100).toFixed(2);
Ändern Sie Ihren Code in:
int total=0, number=0;
float percentage=0.0f;
percentage=((float)number/total)*100f;
printf("%.2f", (double)percentage);
Dies kann Ihnen die richtige Antwort geben
#include <stdio.h>
int main()
{
float total=100, number=50;
float percentage;
percentage=(number/total)*100;
printf("%0.2f",percentage);
return 0;
}
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