Antwort:
Nein. Ganzzahl- und Gleitpunkttypen verwenden verschiedene Bitmuster, um Werte darzustellen.
Ein double von der Tastatur einlesen
Das Schema, das verwendet wird, um Ganzzahlen darzustellen ist völlig anders, als das Schema, das verwendet wird, um Gleitpunktzahlen darzustellen. Auch wenn wir 221 und 221.0 als äquivalent ansehen könnten, sind die Bitmuster, die sie verwenden, vollständig verschieden.
Bei der Gleitpunktdarstellung eines Doubles werden 3 Teile verwendet. Vorzeichen (sign), Exponent (bestimmt die Größe) und die Mantisse (bestimmt die Genauigkeit). Die Mantissse wird im Englischen als significand oder auch fraction bezeichnet.
- Bei Wikipedia findet Ihr eine Abbildung einer Zahl in doppelter Genauigkeit.
- Hier findet Ihr einen längeren Beitrag zur Gleitpunktdarstellung.
- Eine sehr schöne Grafik findet Ihr auf towardsdatascience.com. (Ihr werdet auf der Seite nach unten scrollen müssen.)
Scanner führt einen Gleitpunkt-Input auf eine ähnliche Weise durch, wie einen Ganzzahl-Input. Damit ein Scanner-Objekt die Zeichen in ein float oder ein double konvertiert, verwenden wir die MethodennextFloat() und nextDouble().
Hier ist ein Programm, das einen String von Input-Zeichen in den primitiven Typ double konvertiert und dann diesen Wert und das Doppelte dieses Werts ausgibt:
Das Programm gibt aus:
D:\daten\JavaNotes\kap11>java DoubleDouble Geben Sie ein double ein: 3,14 zahl: 3.14 zahl * 2: 6.28
Hinweis: Ein Scanner-Objekt erkennt die eingestellte Sprache des Betriebssystem und erwartet das jeweils landestypische Dezimaltrennzeichen, wie hier ein Komma.
Wird ein Dezimalpunkt eingegeben, wird das Programm mit einer Fehlermeldung beendet.
import java.util.Scanner;
class DoubleDouble
{
public static void main (String[] args)
{
double zahl;
Scanner scan = new Scanner( System.in );
System.out.print("Geben Sie ein double ein: ");
zahl = scan.nextDouble();
System.out.println(
"zahl: " + zahl + " zahl * 2: " + 2.0*zahl );
}
}
Wir kopieren dieses Programm in unsere Entwicklungsumgebung und führen es aus.
FRAGE 3:
Was meint Ihr wird scan.nextDouble() zurückgeben, wenn der Anwender eine Ganzzahl wie 211 eingibt?