5

Math.pow(0.0, 0.0)Java では 1 が返されますが、これは間違っています。0^0 は未定義です。Windows電卓にも同じ問題があります(私はWin7を使用しています)。何故ですか?

Mathematica は、Casio の関数電卓と同様にエラーとして宣言します。Java や Win の電卓はなぜそうではありませんか? これはバグですか?

4

5 に答える 5

8

0^0 = 1 は、多くのコンテキストで妥当な定義と見なされます。賛成意見と反対意見のリストについては、http://en.wikipedia.org/wiki/Exponentiation#Zero_to_the_power_of_zeroを参照してください。

于 2013-06-22T19:34:10.953 に答える
2

Javaはそれをそのように定義しています。本当に言えることはそれだけです。

ただし、数学的に未定義の量です。理由を確認する1つの方法は、次のように書くことです

x = 0 ^ 0

ここで、べき乗を表すために ^ を使用しました。対数を取ると、

ログ x = 0 ログ 0

すべての数学者が対数 0 が未定義であることを認めているため、これを行ったので、対数 x が未定義であるため、x も未定義になります。(数学的には特異点と呼ばれ、数学者は遭遇する可能性のある最悪の特異点の 1 つだと言うでしょう)。

于 2013-06-22T19:42:13.953 に答える
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.

バグではありません - これは仕様によるものです。

于 2013-06-22T19:34:18.873 に答える