Wie runde ich in Java auf n Nachkommastellen ohne die math-Methoden?

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.


Belaro  30.11.2016, 19:40

Kleiner Anmerk: Falls du Allgemein die Klasse Math nicht verwenden darfst, dann ersetzt du 

Math.pow(10, n)

durch

10^n 
0
shilch  30.11.2016, 19:47
@Belaro

Nein, das geht nicht! Das Zeichen ^ ist ein bitweises XOR.

Du suchst nachher nur den Fehler.

3
raptinator 
Fragesteller
 30.11.2016, 20:45

Also in der Aufgabe steht keine Math Methoden. Also denke ich mal es gilt auch für Math.pow

0
Isendrak  01.12.2016, 01:38
@raptinator

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