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
Stimmt nicht, denn sonst würde Minecraft gar nicht funktionieren
Schnell mal mit SinkScripts nachgeprüft:
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
Stimmt nicht, denn sonst würde Minecraft gar nicht funktionieren
Schnell mal mit SinkScripts nachgeprüft:
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
Schnell mal mit SinkScripts nachgeprüft:
Stimmt wohl, schnell mal nachgeprüft:
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:
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 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 ist Interpretationssache.
http://ideone.com/vmx6Hg
Das selbe Problem gibt es auch in VB.NET. http://ideone.com/AZRDAP