Nachkommastellen abschneiden

Plauzi92

Aktives Mitglied
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:
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 🙂
 
@Robat danke für die schnelle Antwort. Ob wir das nutzen dürfen weiß ich nicht. In der Vorlesung wurde bisher nur Casting von Integers und Doubles behandelt also denke ich mal, dass wir es damit lösen sollen.

@CyborgBeta123 auch dir danke für die Antwort. Ich benutze Integer ja nicht in meiner Rechnung sondern double. Das heißt ich müsste das irgendwie so umschreiben, dass ich mit einem double den Zwischenschritt mit der Verschiebung des Kommas hinbekomme ohne aus dem Wertebereich zu fallen.
 
@CyborgBeta123 hatte gerade einen Denkfehler. Du hast Recht 😀
Die Lösung hatte ich auch schon im Netz gefunden und die funktioniert auch in der Theorie. Allerdings ist die Funktion nicht erlaubt. Würde auch der Übung den Sinn nehmen.

Das hier ist die Aufgabenstellung:
"Implementieren Sie eine statische-public-Methode mit dem Namen "abschneiden",
welche einen Double-Wert und einen Integer-Wert erhält und einen Double-Wert zurückgibt.
Der eingegebene Double-Wert soll nach der Kommastelle, gemäß des eingegebenen Integer-Wertes, abgeschnitten werden.
Sollte der eingegebene Integer-Wert kleiner als 0 oder größer als 10 sein, dann wird der eingegebene Double-Wert unverändert zurückgegeben.
Verwenden Sie dafür passende Kontrollstrukturen, Operatoren und Typumwandlungen um ihr Ziel zu erreichen.
Bsp: abschneiden(5.216497893, 4) liefert das Ergebnis 5.2164 "
 
Ahhhh ich habs.. @CyborgBeta123 du hast es gesagt, ich hab´s gemerkt und dann nicht geändert.. 😀 Manchmal sieht man den Wald vor lauter Bäumen nicht. Wenn ich mit long rechne passt es.
Danke für die Hilfe Leute 🙂
 

Zurück
Oben