Hallo Community,
ich soll von einem double Wert eine bestimmte Anzahl von Nachkommastellen streichen sodass nur so viele Nachkommstellen über bleiben die von einem Integer Wert vorgegeben werden.
Beispiel double x = 3,123456, int y = 4 -> Ausgabe : 3,1234
Das funktioniert mit meinem Code soweit auch ganz gut. Wenn ich in die Methode allerdings folgende Werte übergebe: double x = 3.12453252452135, int = 9 spuckt er mir als Ergebnis 2.147483647 aus. Kann es etwas mit dem Wertebereich des doubles zu tun haben? Wenn ja, wie löse ich das dann? Die Werte sind vom Prof als Testfälle vorgegeben und bis auf diese beiden klappen auch alle anderen.
Hier mein Code:
Würde mich riesig über einen Tipp freuen,
Danke im Voraus
ich soll von einem double Wert eine bestimmte Anzahl von Nachkommastellen streichen sodass nur so viele Nachkommstellen über bleiben die von einem Integer Wert vorgegeben werden.
Beispiel double x = 3,123456, int y = 4 -> Ausgabe : 3,1234
Das funktioniert mit meinem Code soweit auch ganz gut. Wenn ich in die Methode allerdings folgende Werte übergebe: double x = 3.12453252452135, int = 9 spuckt er mir als Ergebnis 2.147483647 aus. Kann es etwas mit dem Wertebereich des doubles zu tun haben? Wenn ja, wie löse ich das dann? Die Werte sind vom Prof als Testfälle vorgegeben und bis auf diese beiden klappen auch alle anderen.
Hier mein Code:
Java:
public static double abschneiden(double x, int y) {
if (y<0 || y>10) // Falls y kleiner 0 oder groesser 10 soll Startwert zurueck gegeben werden
return x;
if (y==0) // Sonderfall fuer y = 0
{
int u = (int) x;
x = (double) u;
return x;
}
else {
double z =10;
for (int i =1; i<y; i++) { // Komma um y Stellen nach rechts verschieben, umwandeln in integer um nachkommastellen zu streichen
// Komma um y Stellen nach links verschieben und x zurueck geben.
z= z*10;
}
x = z*x;
int u = (int) x;
x = (double) u;
x=x/z;
return x;
}
}
Würde mich riesig über einen Tipp freuen,
Danke im Voraus