5

整数除算を考慮する

a = bq + r

ここで、a、b、q、r はそれぞれ、被除数、除数、商、剰余です。特に b = 0 の場合、与えられた a の方程式を満たす一意の q は存在しないため、そのような場合に商 q を未定義にすることは理にかなっています。

ただし、そのような場合、実際には一意の r が存在します。つまり、r = a です。商と剰余が常に一緒に定義されるという前提の下では、q が定義されていないときはいつでも r は定義されないことになりますが、プログラミングでは%、除算に関係なく剰余演算を使用することがよくあり/ます。私は実際に私が望む状況に出くわしましたif b == 0 then a else a % b end

%除数が0の場合、ゼロ除算エラーの代わりに被除数を返すようなプログラミング言語の演算子はありますか?

ほとんどの (またはすべての) プログラミング言語が に対してゼロ除算エラーを返す理由はあります% 0か?

4

2 に答える 2

2

数学的には、剰余は 0 から b-1 の間にあります。ここで、b は除数です。したがって、b = 0 の場合、r は >= 0 でなければならないため未定義です。

于 2011-04-08T15:53:44.363 に答える
2

被除数を返すプログラミング言語はありますか? わからない。私は一度も遭遇したことがありません。

ほとんどの人が配当を返さない理由はありますか? はい。モジュラスは、CPU での整数除算の副産物であるため、CS で一般的な演算です。ほとんどの (すべてではないにしても) アセンブリ言語には剰余演算があり、この演算は除算演算とまったく同じハードウェアを使用します。したがって、ハードウェアでゼロ除算ができない場合、ハードウェアでモジュラス ゼロを実行することはできません。

これは、これをサポートする言語を使用できないということですか? そうではありませんが、通常は単一の命令である操作に if ステートメントを追加する必要があります。これはおそらくパフォーマンスにかなりの影響を与える結果になるため、それを行う人はほとんどいません。

于 2011-04-08T15:54:19.833 に答える