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?
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
.
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.
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%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.
Das ganze Programm ist wie folgt:
%Vor%und Sie werden Ihre Antwort bekommen ....
Tags und Links c++ integer-division