Erhalte Prozent der Zahl in C ++

7

Wie kann ich mehrere Prozent von int berechnen? zum Beispiel möchte ich 30% von der Nummer bekommen, wenn ich dieses Beispiel des Codes verwenden werde, werde ich falsche Antwort bekommen:

%Vor%

Ergebnis ist 60 , und die wirkliche Antwort ist 75 , gibt es eine Möglichkeit, es zu berechnen?

    
user1544067 01.07.2013, 13:38
quelle

9 Antworten

14

Multiplizieren Sie vor dem Teilen:

%Vor%

Der Grund, warum Sie das Ergebnis erhalten, ist, dass Division mit Integer-Typen ein ganzzahliges Ergebnis ergibt: 250/100 ist 2. Wenn Sie vor dem Dividieren multiplizieren, erhalten Sie immer noch ein ganzzahliges Ergebnis, aber zumindest haben Sie keine Daten verloren Zwischenschritte. Wenn Sie mit sehr großen Zahlen umgehen müssen, besteht die Gefahr, dass die von int erlaubte Bandbreite überschritten wird.

Alternativ können Sie Fließkomma-Arithmetik verwenden, wobei Division Brüche von ganzen Zahlen erzeugen kann:

%Vor%

Dies kann jedoch zu unerwarteten Ergebnissen führen, sodass Sie besser nur ganze Zahlen verwenden wie oben. Oder schreibe 3.0/10 anstelle von 0.30 .

    
Joni 01.07.2013, 13:40
quelle
2

Angenommen, die Zahlen sind klein (ish), können Sie sie einfach umdrehen:

%Vor%

(Klammer ist nicht erforderlich, hilft aber bei der Klärung).

Dies wird nicht funktionieren, wenn eine der Zahlen mehrere Millionen sind, aber sollte für kleinere Zahlen in Ordnung sein.

    
Mats Petersson 01.07.2013 13:40
quelle
2

Das Umschalten der Operanden (wie von anderen vorgeschlagen) funktioniert auch, aber nur für den Fall, dass Sie nicht möchten, gibt es eine andere Lösung:

%Vor%     
Sceptical Jule 01.07.2013 13:45
quelle
1

Probieren Sie das aus,

%Vor%     
CodeCrusader 01.07.2013 13:42
quelle
0

Sie müssen Fließkomma-Berechnungen durchführen, andernfalls führt der Compiler hier die ganze Arithmetik als Ganzzahlen aus.

Sie könnten versuchen

%Vor%     
Emil Sit 01.07.2013 13:41
quelle
0

Verwenden Sie float:

%Vor%

Auch das Setzen der 100.0 mit Dezimalpunkt könnte ausreichen.

Denn wenn du es so machst 250/100 in Integer gleich 20 (du kannst 100 in 200 nur zweimal setzen und Integer kümmert sich nicht um den Rest 50) und mal 30 = 60.

    
Ms. Nobody 01.07.2013 13:44
quelle
0

Jetzt denke ich über eine Lösung nach:

%Vor%     
user1544067 01.07.2013 13:45
quelle
0

Das ganze Programm ist wie folgt:

%Vor%

und Sie werden Ihre Antwort bekommen ....

    
user3506720 26.06.2014 10:57
quelle
0

Punkte / Punkte * 30 ex;

15%

%Vor%     
marvin orsua 21.09.2016 07:20
quelle

Tags und Links