4

ここで質問するのは間違っているかもしれませんが、興味があります。多くの言語は、0 で除算するように求められると爆発して失敗することを知っていますが、この不可能な合計をインテリジェントに処理できるプログラミング言語はありますか? もしそうなら、それらは何をしますか? 彼らは処理を続け、350/0 を 350 として扱いますか、それとも実行を停止しますか、それとも何ですか?

4

11 に答える 11

4

あまり知られていないJava プログラミング言語は、IEEE 浮動小数点コンテキストでゼロで除算すると、(分子に応じて)特別な定数Double.POSITIVE_INFINITYorを与えます。Double.NEGATIVE_INFINITYゼロによる整数除算は定義されArithmeticExceptionておらず、スローされます。これは、「爆発と失敗」のシナリオとはまったく異なります。

于 2010-03-05T18:04:05.670 に答える
3

INTERCAL標準ライブラリはゼロ#0除算で戻ります

于 2010-03-05T18:15:39.723 に答える
1

Java では、浮動小数点コンテキストでゼロによる除算を行うと、特別な値Double.POSITIVE_INFINITYorが生成されますDouble.NEGATIVE_INFINITY

于 2010-03-05T18:03:38.873 に答える
0

IEEE 定義の定数 NaN などによる浮動小数点数。thst 値を含む継続的な操作は、最後まで変更されません。整数または整数は例外がスローされて異なります...Javaでは...

于 2010-07-10T07:24:26.997 に答える
0

350/0 を実行した場合に 350 を返す言語があるとしたら、私は驚きます。ほんの 2 つの例ですが、Java はキャッチできる例外をスローします。C/C++ がクラッシュするだけです (おそらくキャッチできるシグナルをスローすると思います)。

于 2010-03-05T18:03:36.330 に答える
0

Delphi では、コンパイル時エラー(0 値の const で割った場合)または実行時に発生した場合はキャッチ可能なランタイム エラーのいずれかをスローします。

C や C++ も同様です。

PHP では、次の警告が表示されます。

警告: <file.php>Xのゼロ除算

したがって、PHP では次のようになります。

$i = 123 / 0;

$i は何も設定されません。しかし、$i は === NULL ではなく、isset($i) は true を返し、 is_string ($i) は false を返します。

于 2010-03-05T18:08:03.763 に答える
0

ウィキペディアから:

拡張実数直線の無限大は、1 や 1.5 などの通常の浮動小数点値と同じように、IEEE 浮動小数点データ型で表すことができます。オーバーフローが発生した場合に置換値として使用されます。ゼロ除算の例外では、正または負の無限大が正確な結果として返されます。

于 2010-03-05T19:17:22.360 に答える
0

Python (少なくともバージョン 2、3 はありません) は、キャッチできる ZeroDivisionError をスローします。

num = 42
try:
    for divisor in (1,0):
        ans = num / divisor
        print ans
except ZeroDivisionError:
    print "Trying to divide by 0!"

プリントアウト:

42
Trying to divide by 0!
于 2010-03-05T19:26:04.267 に答える