Type mismatch < Softwaretechnik+Pro < Praktische Inform. < Hochschule < Informatik < Vorhilfe
|
Hallo,
ich hab ne Aufgabe zu machen und eigentlich klappts ganz gut. Allerdings habe ich jetzt ein kleines Problem:
bei mir kommt immer folgende fehlermeldung beim compilieren:
Type mismatch: cannot convert from double to long
und zwar mache ich zwar ein "L" hinter meine Formel, die halt 123E12 aussieht, weil im Rumpf halt steht, dass es vom Typ "long" ist.
Ich verstehe nicht wiesos nicht klappt. Bei float klappt es auch wenn ich ein "f" hinter meine Formel mache.
Wäre lieb, wenn mir jemand helfen würde. Bin schon am verzweifeln.
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 17:13 Di 26.10.2010 | Autor: | felixf |
Moin!
> ich hab ne Aufgabe zu machen und eigentlich klappts ganz
> gut. Allerdings habe ich jetzt ein kleines Problem:
>
> bei mir kommt immer folgende fehlermeldung beim
> compilieren:
>
> Type mismatch: cannot convert from double to long
>
> und zwar mache ich zwar ein "L" hinter meine Formel, die
> halt 123E12 aussieht, weil im Rumpf halt steht, dass es vom
> Typ "long" ist.
Nun, das L kannst du nur bei ganzen Zahlen anhaengen. Und 123E12 ist hat eine Fliesskommazahl.
> Ich verstehe nicht wiesos nicht klappt. Bei float klappt es
> auch wenn ich ein "f" hinter meine Formel mache.
Mit f kannst du aus ganzen Zahlen Fliesskommazahlen machen. Die andere Richtung geht aber nicht.
> Wäre lieb, wenn mir jemand helfen würde. Bin schon am
> verzweifeln.
Schreib (long)123E12. Oder, besser, direkt 123000000000000L. Ansonsten passieren nachher noch irgendwelche lustigen Konvertierungsfehler...
LG Felix
|
|
|
|
|
Hi Danke!
Und wie mache ich es jetzt wenn da nicht 123E12
sondern 123e-12 steht?
weil dann funktioniert das ja mit dem ausschreiben nicht weil dann kommt cannot convert from double to lang und wenn ich ein f hintendran mache dann kommt cannot convert from float to long.
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 22:35 Mi 27.10.2010 | Autor: | felixf |
Moin!
> Hi Danke!
>
> Und wie mache ich es jetzt wenn da nicht 123E12
>
> sondern 123e-12 steht?
Nun, das ist einfach keine ganze Zahl. Da kannst du noch so viel dran ruetteln, daran aendert sich nichts. Da musst du schon runden, wenn du das einem long zuweisen willst.
> weil dann funktioniert das ja mit dem ausschreiben nicht
> weil dann kommt cannot convert from double to lang und wenn
> ich ein f hintendran mache dann kommt cannot convert from
> float to long.
Was auch nicht ueberraschend ist. Der Compiler weigert sich halt implizit einen Datentyp in einen anderen zu konvertieren, wenn dabei Informationen verloren gehen. Du musst schon explizit casten.
LG Felix
|
|
|
|