Hab schon bei Google gesucht, aber nicht wirklich was gefunden und bei Sun war ich auch nicht erfolgreich...
und zwar suche ich etwas, wo der Code der in Java schon definierten Methoden, wie z.B. [HIGHLIGHT="Java"]static double max( double a, double b)[/HIGHLIGHT] steht und nicht nur einer Erklärung, was die Methode macht.
ich denke du meinst die max methode der klasse math
Code:
/**
* Returns the greater of two <code>int</code> values. That is, the
* result is the argument closer to the value of
* <code>Integer.MAX_VALUE</code>. If the arguments have the same value,
* the result is that same value.
*
* @param a an argument.
* @param b another argument.
* @return the larger of <code>a</code> and <code>b</code>.
* @see java.lang.Long#MAX_VALUE
*/
public static int max(int a, int b) {
return (a >= b) ? a : b;
}
asso double...
Code:
public static double max(double a, double b) {
if (a != a) return a; // a is NaN
if ((a == 0.0d) && (b == 0.0d)
&& (Double.doubleToLongBits(a) == negativeZeroDoubleBits)) {
return b;
}
return (a >= b) ? a : b;
}
Nur ich frage mich jetzt was das genau mit der if Abfrage zu tun hat.
So wie ich das verstehe wird dort abgefragt, ob der als Parameter übergebene double Wert a der gleiche ist wie ebendieser.
Tut mir leid wenn ich mich damit ein wenig blöd anstelle, aber das hat meiner Logik nach nicht viel Sinn.
EDIT: Ich glaube ich verstehe doch, auf jeden fall teilweise. Wenn ich eine Variable vom Typ double mit sich selbst vergleiche, wird false zurückgegeben, sofern der Wert der Variable NaN ist.
Also wird in diesem konkreten Fall NaN zurückgegeben und die Methode beendet, sofern der Anwender ein "NaN-Wert" übergibt. Ist das soweit richtig ?
richtig, wobei es für den Vergleich irrelevant ist, ob es die gleiche Variable ist,
der Sinn ist eher, dass zwei NaN nie gleich sind, weil das eine 1/0 sein könnte und das andere 2/0,
da macht eine Gleichheit oder Reihenfolge keinen Sinn,
bei derselben Variable könnte man strenggenommen von demselben NaN sprechen, aber da man eh nur Werte vergleicht ist ein ==-Vergleich mit NaN immer false, einfache Regel
Das EDIT stimmt so weit. Eine Zahl, die nicht gleich zu sich selbst ist, ist eben keine Zahl (... not a number). Und welche die größere ist von _einer Zahl und keiner Zahl, ist ja schon fast eine philosophische Frage....
rofl. Schon mal ein NaN gesehen?
[HIGHLIGHT="Java"]
if(1.0/0.0 != 2.0/0.0){
System.out.println("hmm, war das etwa ein NaN?"+1.0/0.0);
}else{
System.out.println("oder vielleicht doch Infinity? "+1.0/0.0);
}
[/HIGHLIGHT]
1.0/0.0 ist kein NaN, das ist eine sehr hübsche +Infinity, damit kann man wunderbar weiterrechnen
[HIGHLIGHT="Java"]
System.out.println(0.0/0.0);
System.out.println(Double.POSITIVE_INFINITY*0.0);
System.out.println(Double.POSITIVE_INFINITY/Double.POSITIVE_INFINITY);
[/HIGHLIGHT]
sowas ist NaN.