Kann man integer Werte in Java mit Double werten verrechnen ohne zu casten zB int a =10 und Double b = 3.0 mit der Rechnung a*b?

4 Antworten

Nein. Wenn du es so machst, castet es automatisch zu double.

Das ist offensichtich, weil Kommazahlen und Integer in einem ganz anderen Format sind.

Deskar 
Fragesteller
 15.07.2015, 12:26

Hab da eine Aufgabe wo es noch Double c = 2.0 gibt und die aufgAbe: c++  - a * b und ich soll das Ergebnis ausgeben. Soll ich das rechnen und sagen dass es dann ein Double ist wegen Auto  cast oder sagen keine Lösung weil geht nicht

0

Eigentlich kann man keine Ints gegen Floats casten. Es sind völlig verschiedene Arten der Datendarstellung.

Java macht solche Dinge „implizit“, weil viele Programmierer gerne die Dinge „einfach“ haben, anstatt sich schon bei der Programmplanung tiefergehende Gedanken zu machen. Schließlich stimmt doch da was nicht … :-)

Siehe

http://stackoverflow.com/questions/4097694/float-int-implicit-conversion

Ja, aber das Ergebnis ist ein Double und lässt sich ohne expliziten cast nicht einem Integer zuweisen.

Deskar 
Fragesteller
 15.07.2015, 12:30

Hab da eine Aufgabe wo es noch Double c = 2.0 gibt und die aufgAbe: c++ - a * b und ich soll das Ergebnis ausgeben. Soll ich das rechnen und sagen dass es dann ein Double ist wegen Auto cast oder sagen keine Lösung weil geht nicht

0
PWolff  15.07.2015, 12:33
@Deskar

Ich weiß nicht, ob sich in Java der PostIncrement-Operator ++ auf ein Double anwenden lässt. Falls ja: ja, wegen automatischem Typecast.

0
mepeisen  15.07.2015, 15:38
@PWolff

Korrekt. Man hat hier drei Antwortmöglichkeiten, die dummerweise auch noch von den Compiler-Einstellungen abhängen (je nachdem, welcher Compiler verwendet wird).

1. Geht nicht, wenn Autoboxing deaktiviert ist (das ist der Begriff für großes in kleines double usw.)

2. Geht nicht, wenn implizites casten aktiviert ist

3. geht, wenn explizit gecasted wird bzw. wenn implizites casten möglich ist mit Ergebnis-Datentyp double.

0

Das ist dann ein impliziter (automatischer) Cast, das Ergebnis wäre 30.0 als double