Beiträge von XPhenoxX im Thema „Java 8 Update 20 fail“

    Das wird dich jetzt gleich umhauen, aber double Variablen werden nicht Nachkommastelle für Nachkommastelle gespeichert, sondern nur als Bruchzahl, die sich dem Ergebnis annähert.


    Nettes Beispiel: http://ideone.com/SBXKmd
    Betrifft auch C++: http://ideone.com/vmx6Hg

    Das ist ja ganz schön für Java, trotzdem will ich da 1(.0) und nicht 0.9999999999999999 raushaben. Andere Programmiersprachen kriegen das auch hin, sogar mit Double! :O

    Das macht so ziemlich jede Hochsprache. C, C++, C#, Java, Objective-C, (eigentlich der gesamte C-Stamm), bc, bash, usw.

    Ist ja auch kein Wunder, C, C++, C# und Java sind in der gleichen Familie.
    http://goessner.net/learn/inp/2006/lec01/Stammbaum.jpg


    Stimmt nicht, denn sonst würde Minecraft gar nicht funktionieren :smiling_face:
    Schnell mal mit SinkScripts nachgeprüft:

    Code
    /script return 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1; Output: 1.0 /script


    Stimmt wohl, schnell mal nachgeprüft:

    Code
    public class Bla{ public static void main(String []args){ double outPut; outPut = 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1; System.out.println(outPut); } }


    Ausgabe:

    Code
    0.9999999999999999


    http://www.compileonline.com/


    Wäre auch fatal, würde ein Integercast runden ...

    Wäre auch fatal wenn Java mal nicht aus der Reihe tanzen würde und 1 als Ergebnis ausspucken würde. Was jeder normale Mensch auch erwarten würde, wenn mit ganzen Zahlen gerechnet wird...


    Wenn Java 0 anzeigt ist das auch gerundet... Abgerundet... Und wenn nicht gerundet werden soll, dann müsste Java bei dieser Rechnung einfach einen Fehler ausgeben, nur das wäre logisch. 0 ist unlogisch.

    Dann hast du definitiv was falsch gemacht.

    Das System wurde frisch neu installiert. Nur Java 8 Update 20 x64 installiert, eingestellt, dass Code niemals im Hintergrund ausgeführt wird und Java im Browser deaktiviert, Umgebungsvariablen für mehr RAM gesetzt, Minecraft installiert und die oben beschriebenen Bugs festgestellt.


    Gut, den Bug mit dem RAM gibt es schon ewig, auch bei Gronkh hat man den öfter gesehen.


    Bei Minecraft 1.8 wird mit F3 auch die verwendete Grafikkarte angezeigt, sodass ich Nvidia Optimus als Fehlerquelle ausschließen kann.


    Ja Java ist sehr zickig was Programmierung angeht. Auch mathematische Rechnungen sind nicht gerade die Stärke von Java, beispielsweise ergibt 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 laut Java 0.99 (oder so ähnlich, hab gerade keinen Java Compiler da). Auch 99/100 ergibt auf ganze Zahlen gerechnet 0, laut Java.


    Alles so dämliche Eigenarten die ich bisher in keiner anderen Programmiersprache (mit der ich programmiert habe) gesehen habe. Für diese Fehler braucht man lästige Workarounds damit das richtige Ergebnis rauskommt.

    wieso sollte eine solch professionelle Firma wie Oracle ein instabiles / verbuggtes Update veröffentlichen?

    Weil Java 8 noch in der Beta-Testphase ist?! Bei mir zum Beispiel flackert die Schrift im Java-Konfigurationsmenü.


    In Minecraft fällt mir auf, das ich in der Nähe des Spawnbaums sehr wenig FPS habe, teilweise bricht das ganze auf 15 FPS ein obwohl ich sonst immer mindestens 70 FPS im Spawnbaum hatte.
    Nebenbei natürlich immer diese "halbsekündigen" Freezes wenn Java/Minecraft mal wieder 90% der eigenen Daten aus dem RAM schmeißt obwohl nur maximal 10% des für Java freigegebenen RAMs belegt sind.


    Professionelle Firma? Java ist eine einzige Sicherheitslücke! Nicht umsonst darf bei mir Java nur auf eine einzige IP zugreifen, Updates werden manuel eingespielt, der AutoUpdater hatte mir damals 9 Viren heruntergeladen *YAY*


    Edit 1:

    Warum ist Java 8 auf java.com nicht verfügbar?
    [...]
    Bevor wir Endbenutzern das neue Release von Java auf der java.com-Website zum Download bereitstellen, wird es zuerst Entwicklern zur Verfügung gestellt, um sicherzustellen, dass keine schwerwiegenden Probleme auftreten. Wenn Sie Interesse an einer Testversion von Java 8 haben, können Sie diese von Oracle.com herunterladen.

    Edit 2: Ich spiele Minecraft Vanilla ohne TexturePack.