Wie runde ich in Java auf n Nachkommastellen ohne die math-Methoden?
Hi haben diese Aufgabe bekommen: " a) Schreiben Sie eine Methode, die eine übergebene Zahl auf- oder abrundet. Beispiele: 3,2 wird auf 3 abgerundet, 3,5 auf 4 aufgerundet. b) Schreiben Sie eine weitere Methode, welche eine übergebene Zahl auf eine bestimmte Anzahl Nachkommastellen rundet. Die Anzahl der Nachkommastellen soll anhand eines zusätzlich übergebenen Parameters bestimmt werden können. Hinweis: Die Verwendung sämtlicher Methoden aus der Klasse Math ist untersagt! "
Die Aufgabe a) habe ich hinbekommen. Nun komme ich aber bei der b) nicht weiter. Kann mir da vielleicht jemand helfen?
1 Antwort
![](https://images.gutefrage.net/media/user/shilch/1478025704220_nmmslarge__71_0_450_450_299dcd6eab161896c93d8cdcea61258c.jpg?v=1478025706000)
a)
Du teilst deine Zahl Modulo 1 und erhälst die Nachkommastellen.
double nachkommastellen = zahl % 1;
Damit kannst du entsprechend über auf- / abrunden entscheiden. Deine Zahl ist dann also:
double runden = 3.14; boolean aufrunden = runden % 1 >= 0.5; int gerundet = ((int) runden) + (aufrunden ? 1 : 0);
b)
Das gleiche, diesmal multiplizierst du deine Zahl vorher mit 10^(Anzahl der Nachkommastellen):
double nachkommastellen = zahl * Math.pow(10, n) % 1;
Der Code sieht dann ähnlich wie oben aus.
![](https://images.gutefrage.net/media/user/Isendrak/1555747535308_nmmslarge__0_0_160_160_7f828fad18ee7edb96b8daceedaeeadb.png?v=1555747535000)
Dann wähle eine von diesen:
class NotMath{
//Rekursiv
public static double r_pow(double x, int y){
if(y > 0) return x * pow(x, y - 1);
else return 1.0;
}
//Iterativ
public static double i_pow(double x, int y){
double z = 1.0;
for(int i = y; i > 0; i--)
z *= x;
return z;
}
}
![](https://images.gutefrage.net/media/user/Belaro/1455644281398_nmmslarge__57_11_639_639_513e241d33d4e0c69b08054d58266144.png?v=1455644283000)
Kleiner Anmerk: Falls du Allgemein die Klasse Math nicht verwenden darfst, dann ersetzt du
Math.pow(10, n)
durch
10^n
Also in der Aufgabe steht keine Math Methoden. Also denke ich mal es gilt auch für Math.pow