wake-up-neo.net

Konvertiere int in float

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.

15
Jack

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.

24
Daniel Fischer

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
5
Omkant

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.

1
Alan Corey

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.

1
Jens Gustedt

Dies sollte funktionieren, indem es auf 2 Punkte gerundet wird

       int a=53214
       parseFloat(Math.round(a* 100) / 100).toFixed(2);
0
Mustafa Kunwa

Ändern Sie Ihren Code in:

int total=0, number=0;
float percentage=0.0f;

percentage=((float)number/total)*100f;
printf("%.2f", (double)percentage);
0
Lundin

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;
}
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

0
ALOToverflow