1

私は数学者ではありませんが、無限大で割ることは悪い数学であるか、少なくとも非現実的であると思います。

Firefox では問題なく動作していたが、IE ではエラーが発生していた JavaScript のデバッグに 30 分を費やしました。特定のシナリオで、IEに無限で割るように要求していたためだと最終的に気づきました。

それで、私はそれを修正しましたが、なぜFirefoxがそれでOKだったのか興味があります. 確かに、これはプログラミングというより数学の問題かもしれません。;)

4

3 に答える 3

9

無限大で割っても問題ありません。ゼロです。

無限大を未定義の無限大で割っていない限り (少なくとも一般的には)

于 2009-10-23T14:55:43.570 に答える
6

IEのバグだと思います。IEEE 数学の規則によれば、n/Inf=0 (n!=0 の場合) です。したがって、IE がこれに不満を言う場合、それは IE の問題です。一方、通常の数学演算で Inf を使用することには問題があり、コードが最初から Inf に依存していなかった方がよいでしょう。

なぜ危険なのですか?まず、IEEE 754 によると、次のようになります。

1/0 = Inf
1/-0 = -Inf

しかし、0 = -0 であることはわかっているので、

Inf = -Inf

これは明らかに望ましくありません。いずれにせよ、IEEE は Inf を通常の数にするつもりはありませんでした。Inf と NaN は、固有の限られた精度とオーバーフローの問題を持つコンピューターで浮動小数点演算を行うために存在し、通常の演算に似ています。最も単純な例を挙げると、実数のセットは加算で閉じられます (2 つの実数を加算すると、常に別の実数)。有限精度の浮動小数点数でこれを行うと、2 つの数値を加算するとオーバーフローが発生する場合があります。これをエラー状態として扱わなくて済むようにするために、IEEE は Inf と NaN の 2 つの追加シンボルと、それらの動作に関する一連の規則を導入しました。現在、数学演算の結果は常に数値、Inf、または NaN であり、結果が意味をなすかどうかはユーザーに委ねられています。

于 2009-10-23T15:55:45.900 に答える
0

数を無限大で割ることは、数学的な観点からは完全に合理的です。実際にはゼロに達することなく、無限にゼロに近い数です。

ソフトウェアの観点からは、無限大は離散的に表現できる値ではないため、これははるかに困難です。私の推測では、動作の違いは設計上の決定に基づいていると思います。

Firefox では、すべての実用的な目的のために、この結果が必要なものに機能するため、値 0 を返すことを選択した可能性があります。

一方、IE では、開発者は、個別の答えを出すことができないことがわかっている計算を実行できないようにするという意識的な決定を行ったようです。

于 2009-10-23T15:13:05.613 に答える