Hey Leute, ich versuche, auf 3 Dezimalstellen zu runden.Ein Doppel runden
Ich habe den folgenden Code verwendet.
this.hours = Round(hours + (mins/60), 3);
Aber es funktioniert nicht. Wo bin ich falsch gelaufen? Dank
Hey Leute, ich versuche, auf 3 Dezimalstellen zu runden.Ein Doppel runden
Ich habe den folgenden Code verwendet.
this.hours = Round(hours + (mins/60), 3);
Aber es funktioniert nicht. Wo bin ich falsch gelaufen? Dank
können Sie diese Funktion verwenden:
public static double Round(double number, int decimals)
{
double mod = Math.pow(10.0, decimals);
return Math.round(number * mod)/mod;
}
Nein, du kannst nicht. Siehe meine Antwort. – EJP
verstehst du nicht zu beantworten, und die Funktion von oben funktioniert für Themenstarter, so dass ich Ihren Punkt nicht bekommen ... – Michel
ist es nicht ein wenig dumm, dass Sie mir einen Downvote geben, wenn die Antwort für den Starter nützlich ist ? – Michel
Erste Sache ist, dass alle Variablen sind int
so das Ergebnis Ihrer Abteilung ist auch eine int
, also nichts zu Round
.
Dann nehmen Sie einen Blick auf: How to round a number to n decimal places in Java
Wie können Sie sehen, dass Doppel-und Minuten int sind? – Michel
Es ist mehr eine Intuition. Die Variablennamen zeigen auf ganzzahlige Werte (Stunde und Minute) und es ist auch ein häufiger Fehler zu denken, dass eine Division doppelt zurückgibt. –
wenn mins
eine ganze Zahl Sie durch 60.0 zu teilen haben eine schwimmende Zahl zu erhalten, die Sie
Wenn mins
eine Ganzzahl ist, dann führt mins/60
zu einer ganzzahligen Division, die immer zu 0 führt.
Versuchen Sie, von 60
zu 60.0
zu wechseln, um sicherzustellen, dass die Division als Gleitkommadivision behandelt wird.
Beispiel:
int hours = 5;
int mins = 7;
// This gives 5.0
System.out.println(Math.round(1000 * (hours + (mins/60 )))/1000.0);
// While this gives the correct value 5.117. (.0 was added)
System.out.println(Math.round(1000 * (hours + (mins/60.0)))/1000.0);
Versuchen Sie es mit wie folgt
this.hours = Round(hours + (((double)mins)/60), 3);
Sie können nicht. Doppelpunkte haben keine Dezimalstellen, da sie binär und nicht dezimal sind. Sie können es in etwas umwandeln, das Dezimalstellen aufweist, d. H. Eine Basis-Zehn-Nummer, z. BigDecimal, und passen Sie die Genauigkeit an, oder Sie können es für die Ausgabe mit den Funktionen von java.text, z. DecimalFormat oder die entsprechende System.out.printf() - Zeichenfolge.
Welches Ergebnis erhalten Sie? Welche Arten sind "Stunden" und "Minuten" und "diese.Stunden"? – pinkfloydx33
Stunden und/oder Minuten müssen doppelt sein. Sind sie ? –
Was ist Round()? – EJP