Math.pow(0.0, 0.0)
Java では 1 が返されますが、これは間違っています。0^0 は未定義です。Windows電卓にも同じ問題があります(私はWin7を使用しています)。何故ですか?
Mathematica は、Casio の関数電卓と同様にエラーとして宣言します。Java や Win の電卓はなぜそうではありませんか? これはバグですか?
0^0 = 1 は、多くのコンテキストで妥当な定義と見なされます。賛成意見と反対意見のリストについては、http://en.wikipedia.org/wiki/Exponentiation#Zero_to_the_power_of_zeroを参照してください。
Javaはそれをそのように定義しています。本当に言えることはそれだけです。
ただし、数学的には未定義の量です。理由を確認する1つの方法は、次のように書くことです
x = 0 ^ 0
ここで、べき乗を表すために ^ を使用しました。対数を取ると、
ログ x = 0 ログ 0
すべての数学者が対数 0 が未定義であることを認めているため、これを行ったので、対数 x が未定義であるため、x も未定義になります。(数学的には特異点と呼ばれ、数学者は遭遇する可能性のある最悪の特異点の 1 つだと言うでしょう)。
関数の動作の正確な定義はhttp://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#pow(double,%20double)にあります。
あなたはここでそれを見るでしょう
public static double pow(double a,
double b)
Returns the value of the first argument raised to the power of the second argument. Special cases:
If the second argument is positive or negative zero, then the result is 1.0.
バグではありません - これは仕様によるものです。