Hi!
Ich steh gerade vor einem Rätsel..
Kann mir bitte jemand erklären wieso die folgenden Zeilen:
mit val = 64
folgende Ausgaben liefern:
- wenn val = double
- wenn val = float
Also laut der API: http://java.sun.com/j2se/1.5.0/docs/api/java/util/ [...] tml#syntax macht %a folgendes:
Also 64 = 16 * 4 (also die letzte Ausgabe Test h2: 40 ist ok)
Nun verstehe ich aber nicht wie die anderen beiden Ausgaben zustande kommen!? Kann mir das vielleicht jemand erklären?
Konkret: Also ich versteh nicht was es mit dem p6 auf sich hat!
Ausserdem ist mir schleierhaft, wieso die 2te Ausgabe bei double "40500000" und bei float "42800000" ist!? Also 64 ist als Binärzahl eindeutig darstellbar und sollte meiner Erwartung nach immer genau 40.00000.. (hexadezimal) sein.
Wäre super, wenn mich da jemand aufklären könnte!
Vielen Dank im Voraus!
Gruß Tom
Ich steh gerade vor einem Rätsel..
Kann mir bitte jemand erklären wieso die folgenden Zeilen:
Code:
System.out.printf("Test a: %a\n", val);
System.out.printf("Test h1: %h\n", val);
System.out.printf("Test h2: %h\n", (int)val);
mit val = 64
folgende Ausgaben liefern:
- wenn val = double
Test a: 0x1.0p6
Test h1: 40500000
Test h2: 40
- wenn val = float
Test a: 0x1.0p6
Test h1: 42800000
Test h2: 40
Also laut der API: http://java.sun.com/j2se/1.5.0/docs/api/java/util/ [...] tml#syntax macht %a folgendes:
'a', 'A' floating point The result is formatted as a hexadecimal floating-point number with a significand and an exponent
Also 64 = 16 * 4 (also die letzte Ausgabe Test h2: 40 ist ok)
Nun verstehe ich aber nicht wie die anderen beiden Ausgaben zustande kommen!? Kann mir das vielleicht jemand erklären?
Konkret: Also ich versteh nicht was es mit dem p6 auf sich hat!
Ausserdem ist mir schleierhaft, wieso die 2te Ausgabe bei double "40500000" und bei float "42800000" ist!? Also 64 ist als Binärzahl eindeutig darstellbar und sollte meiner Erwartung nach immer genau 40.00000.. (hexadezimal) sein.
Wäre super, wenn mich da jemand aufklären könnte!
Vielen Dank im Voraus!
Gruß Tom