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
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.
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;
}
}
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