/*
Datei............: Aufg0411.java
Projekt..........: Einführung in die Java-Programmierung
Erstellt.........: 18.10.97, Guido Krüger
Geändert.........: --
Aufgabe..........: Musterlösung zu Aufgabe 04.11
Kommentare.......:

Eine einschränkende Konvertierung ist eine solche, die
nicht uneingeschränkt verwendet werden darf. Sie wird
insbesondere nicht automatisch vom Compiler verwendet, 
sondern erfordert den expliziten Aufruf des Type-Cast-Operators
im Programm.

Einschränkende Konvertierungen gibt es bei primitiven und
Referenztypen. Bei primitiven Typen versteht dabei generell
eine Konvertierung von einem "größeren" in einen "kleineren"
Typ, beispielsweise von double nach int. Bei einem Referenztyp
versteht man darunter eine Konvertierung von einer Klasse A
in eine daraus abgeleitete Klasse B. Hierbei können zwar 
keine Datenverluste auftreten, aber sie ist nur erlaubt, wenn
das zu konvertierende Objekt zur Laufzeit vom Typ B oder einem
seiner Untertypen ist.

Einschränkende Konvertierungen bei primitiven Typen können
sehr leicht Datenverluste verursachen, da der Wertebereich
des "kleineren" Typs in der Regel kleiner ist als der des
"größeren". Das folgende Programm zeigt dies am Beispiel
der Zuweisung verschiedener Fließkommazahlen an eine 
ganzzahlige Variable. Die Ergebnisse werden immer dann falsch,
wenn der Nachkommateil ungleich 0 ist oder wenn die Zahl zu
groß ist, um in einem short dargestellt zu werden.
*/
public class Aufg0411
{
  public static void main(String args[])
  {
    short i;

    i = (short)1.0;
    System.out.println("1.0 -> " + i);
    i = (short)3.14;
    System.out.println("3.14 -> " + i);
    i = (short)50000;
    System.out.println("50000 -> " + i);
    i = (short)1e10;
    System.out.println("1e10 -> " + i);
  }
}

