Oracle kann durch 0 teilen !?!

Empire Phoenix

Top Contributor
Hi, beim suchen eines meiner bugs bin ich auf folgenden hoch amüsanten JVM bug getroffen:

ich übergebe 0 als value,

Java:
public void setValue(final float value) {
		System.out.println("1 " + this.getName() + " " + value);
		final float percentraw = this.mappedRange / value;
		System.out.println("2 " + this.getName() + " " + percentraw);
		this.percent = Math.round(percentraw) * 100;
		System.out.println("3 " + this.getName() + " " + this.percent);
	}

heraus kommt jedoch:

Code:
1 red slider 0.0
2 red slider Infinity
3 red slider -100.0

Seit wann ergibt ein Teilen durch 0 bitte Infinity statt einer exception?

JVM ist:
Code:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\Empire-Phoenix>java -version
java version "1.7.0_05"
Java(TM) SE Runtime Environment (build 1.7.0_05-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.1-b03, mixed mode)
 
Zuletzt bearbeitet:
Die Diskussion hatten wir hier vor Längerem mal. Meine, mich zu erinnern, dass das genau so in der JVM-Spez steht. Begründungen standen da auch, aber erinnern?
 
Oracle kann durch 0 teilen, weil es sich an internationale Standards hält, wie den IEEE 754:

Unendlich
Der Gleitkommawert „Unendlich“ repräsentiert Zahlen, deren Betrag zu groß ist, um dargestellt zu werden. Es wird zwischen +„Unendlich“ und −„Unendlich“ unterschieden. Die Berechnung von 1,0/0,0 ergibt per Definition ebenfalls +„Unendlich“.

IEEE 754 ? Wikipedia
 

Zurück
Oben