Java: Versucht, den Prozentsatz von zahlen, wie in der Runde?
Ich habe zwei ganzzahlige Werte, x und total. Ich bin auf der Suche nach der Anteil von x in der Summe als integer. Dies ist, wie mache ich es jetzt:
Prozentsatz = (int)((x*100)/Summe);
Der Prozentsatz muss eine ganze Zahl sein. Wenn ich dies mache es immer Runden Sie den Dezimalpunkt nach unten. Gibt es eine einfache Möglichkeit, berechnen Sie den Prozentsatz als ganze Zahl, so dass es schließt, wenn der decimal-.5 oder höher?
InformationsquelleAutor Petefic | 2012-03-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
Math.round(x * 100.0/total)
. Aber beachten Sie, dass dies gibt eine lange, so dass ein einfacher cast aufint
erforderlich.Ich legte 100.0 zwingen es zu verwenden Gleitkomma-Arithmetik vor die Rundung.
Ich glaube, es gibt ein int, wenn Sie übergeben eine float? Die Art, wie ich geschrieben habe, es wird in einem Doppel-und Rendite eine lange.
eigentlich habe ich bearbeitet meine Antwort, weil x, 100 und insgesamt wurden alle int-Werte, so dass das arithmetische würde haben alle ganzen zahlen, und der Aufruf von Runde wäre schon eine Verschwendung von Zeit. Ich änderte 100,0 zu machen, verwenden Gleitkomma-Arithmetik und fügte dann eine Erklärung für Sie.
vielleicht sollten Sie einen Blick auf die Revisionen der meine Antwort, bevor Sie dumme falsche Anschuldigungen.
InformationsquelleAutor joshuahealy
funktionieren sollte.
InformationsquelleAutor antonio081014
Verwenden Sie einfach
Math.round(100.0 /total * x);
InformationsquelleAutor Chris
Warum nicht
Math.round((x*100)/total);
Diese Antwort löst nicht das problem, da
x
undtotal
sind beide Integer. Der Ausdruck ausgewertet wird die Verwendung von integer-Arithmetik und wird "gerundet" unten vor der übergabe in die Funktion Runden.InformationsquelleAutor Churk
Verwenden Sie die standard-Mathematik-Bibliothek in Java.
InformationsquelleAutor Dharini Chandrasekaran
Können Sie fügen Sie 0,5 für positive Werte (rund um infitity)
Dies ist schneller als mit Mathematik.Runde, aber vielleicht nicht so klar.
BTW:
100.0 /total * x
möglicherweise nicht das gleiche Ergebnis wiex * 100.0 /total
wie die Reihenfolge der Auswertung verändern können, ist das Ergebnis für die floating-point.InformationsquelleAutor Peter Lawrey
Einfachste Methode -
Frage : Wie round up Wert eine Dezimalzahl(z.B. : int n = 4.57)
Antwort : Math.Runde(n);
Ausgabe : 5 .
Es ist auch nicht korrekt; möchten Sie vielleicht Lesen Sie die Frage sorgfältig durch und überprüfen Sie heraus die viele bereits vorhandene Antworten, die korrekt beantworten.
InformationsquelleAutor Anonymous