possible lossy conversion from double to int

A

Anna-Lena

Mitglied
Guten Abend, beim Kompilieren kommt immer der Fehler

incompatible types: possible lossy conversion from doubt to int.

Java:
public static void analyze(Resistor resistor) {

        ElectronicColorCode ring1 = resistor.bandA();
        ElectronicColorCode ring2 = resistor.bandB();
        ElectronicColorCode ring3 = resistor.bandC();

        int r1 = colorValue(ring1);
        int r2 = colorValue(ring2);
        int r3 = colorValue(ring3);

        int sollWiderstand;
        int istWiderstand = resistor.resistance(); // measured resistance
        double tolerance = Math.abs((sollWiderstand - istWiderstand)) / sollWiderstand * 100;
        ElectronicColorCode ring4 = toleranceCode(tolerance);
        resistor.setBandD(ring4);
    }

Ich bin echt unsicher in Englisch und beim Nachschauen/Übersetzen stoße ich immer auf englisch-sprachige Seiten.
Ich wäre für Hilfe sehr dankbar:)
 
kneitzel

kneitzel

Top Contributor
Es gibt diverse Datentypen in Java, die unterschiedliche Werte speichern können.
Wenn Du nun Werte überträgst, dann kann das gut gehen, aber wenn der Platz nicht ausreicht, dann wird etwas abgeschnitten.

Also das kann man sich so vorstellen: Du hast einen A4 Kopierer und nun will einer ein A3 Blatt kopieren. Das geht - du packst das einfach irgendwie drauf und machst die Kopie. Aber du hast dann nur die Hälfte kopiert. Auf der Kopie fehlt die andere Hälfte.

In dem Fall gibt die Methode ein double Wert zurück. Dies ist eine Fliesskommazahl. Ds ist somit eine Zahl, die zum einen Nachkommastellen hat und zum anderen auch sehr groß sein kann (da es eine Exponentielle Darstellung ist).

Also wenn da ein Wert 3,5 drin ist (oder 3.5 - in Java wird der . statt dem , verwendet), dann kann da nur die Ganzzahl 3 in den Int übernommen werden.

Daher kommt dieser Fehler. Wenn Du diese Konvertierung machen willst, musst Du diese Konvertierung explizit angeben: Dazu einfach den Zieltyp in Klammen davor schreiben:
int istWiderstand = (int)resistor.resistance();
 
A

Anna-Lena

Mitglied
Vielen Dank für die schnellen Lösungen und die Erklärung. Sehr verständlich an dem Beispiel :)
 

Ähnliche Java Themen


Oben