概要 数学 においてゼロ除算 (ゼロじょさん、ゼロじょざん、0除算、英語 : division by zero )とは、0 で除す割り算 のことである。このような除算は、除される数をa とすると、形式的に a / 0 と書くことができるが、このような式を矛盾なく定義することはできない。一方、コンピュータプログラムの計算においてゼロ除算が発生した場合、大抵はエラー となって計算処理が中断されてしまう為、一般的には0による除算が起こらないように設計される。
陥りやすい誤解 現代数学の観点では、いかなるアプローチから定義を試みようとも必ず破綻に至る。結局、「値を定義し得ないため、計算は不可能である 」と理解する他ない概念であり、それ以上の議論によって数学的に有用な結果が得られることは期待できない。しかし、概念自体は極めて初等的な知識で捉えることができるため、しばしば数学的原則を前提としていない議論や独自な解釈が展開されることがある。そのような議論や解釈はいずれも論理的破綻を含むか信頼性のある根拠を伴わない為、学術的な評価の余地をほとんど有しない。
ゼロ除算の定義可能性に関する誤った理解の典型としては、例えば lim x → + 0 1 x {\displaystyle \lim _{x\to +0}{\frac {1}{x}}} 関数 y = 1 / x のグラフ。x が 0 に近づくと、y の絶対値 は無限大に近づく。 直観的に a / 0 は a / b で 正数b を 0 に漸近 させたときの極限 を考えることで定義されるように見える。
a が正の数の場合、次のようになる。
lim b → 0 + a b = + ∞ {\displaystyle \lim _{b\to 0+}{\frac {a}{b}}=+\infty } リーマン球面は、複素平面 を立体射影 により球面に射影したものとして視覚化できる。
リーマン球面
リーマン球面 は、複素平面に無限遠点 ∞ の1点を付け加えて得られるもの C ∪ {∞} である。上記実射影直線(射影拡大実数)の複素数版とも考えられる。リーマン球面は複素解析 において重要な概念であり、演算は例えば 1/0 = ∞、1/∞ = 0、などとなるが、∞+∞ や 0/0 は定義されない[ 12] 。
コンピュータにおけるゼロ除算 SpeedCrunchという電卓ソフトでゼロ除算を実行したときの様子。エラーが表示されている。 ゼロ除算をしたときのコンピュータの挙動は整数演算の場合と浮動小数点数 演算の場合で異なる[ 13] 。したがって、整数演算の場合と浮動小数点数演算の場合で分けて説明する。
整数演算の場合 コンピュータにおける整数のゼロ除算では結果を表す方法がなく、多くのプロセッサは整数のゼロ除算を実行しようとすると 《例外 》 を発生させる。(なおIntel 8086 の場合、商がレジスタに格納できる数値を越えている場合にもゼロ除算した時と同様の例外が発生する)。この例外に対する対処がなされていない場合、ゼロ除算を実行しようとしたプログラムは強制終了 (アボート)されてしまう 。これは、ゼロ除算が 《 エラー 》 と解釈されるためで、エラーメッセージが表示されることも多い[ 16] 。
浮動小数点演算の場合 他方、浮動小数点演算の場合は、次のようなことが起きる。
なおゼロ除算が生じた場合にそのマシンで表現可能な最大値に + /- の符号も考慮した上で置き換えて処理を続行することを推奨している本もある[ 24] 。
なお、浮動小数点数演算の規格であるIEEE 754 では、全ての浮動小数点数演算が定義されており、ゼロ除算も例外ではなく、どういう値になるか(どういう値を返すべきか)が定義されている。IEEE 754の定義によれば、a /0 で a が正の数であれば、除算の結果は正の無限大となり、a が負の数であれば負の無限大となる。そして、a も 0 であった場合、除算結果は NaN (not a number 、数でない)となる。IEEE 754 には −0 も定義されているため、0 の代わりに −0 で除算をした場合は、上述の符号が反転する。 IEEE 754は現在、ほとんどのコンピュータでサポートされている。
コンピュータのゼロ除算が原因で実際に現実世界で起きた事態 1997年 、民生品の応用を研究していたアメリカ海軍 は、タイコンデロガ級ミサイル巡洋艦 「ヨークタウン 」を改造して主機のガスタービンエンジンの制御 にマイクロソフト のソフトウェアを採用したが、試験航行中にデータベース のゼロ除算が発生してソフトウェアが《例外》を返し、結果として主機が停止、回復するまでカリブ海 を2時間半ほど漂流 する事態となってしまった[ 27] 。
ポップカルチャー
脚注 ^ 処理速度やリアルタイム性が求められる制御 装置、組み込みシステム などではしばしば、動作を遅くさせがちな浮動小数点演算は避け、あえて整数演算をさせる。
出典 ^ IEEE Computer Society (August 29, 2008). IEEE Standard for Floating-Point Arithmetic . IEEE. doi :10.1109/IEEESTD.2008.4610935 . ISBN 978-0-7381-5753-5 . IEEE Std 754-2008. http://ieeexplore.ieee.org/servlet/opac?punumber=4610933 . ^ “【算数編】小学校学習指導要領(平成29年告示)解説 ” (pdf). 文部科学省. p. 146. 2021年3月18日 閲覧。 ^ Watson, Jane M. (1991). “Models to Show the Impossibility of Division by Zero” (英語). School Science and Mathematics 91 (8): 373–376. doi :10.1111/j.1949-8594.1991.tb12123.x . ISSN 1949-8594 . https://onlinelibrary.wiley.com/doi/abs/10.1111/j.1949-8594.1991.tb12123.x . ^ a b Duncan, Hilda F. (1971-10-01). “Division by zero” (英語). The Arithmetic Teacher 18 (6): 381–382. doi :10.5951/AT.18.6.0381 . https://pubs.nctm.org/view/journals/at/18/6/article-p381.xml . ^ Tsamir, Pessia; Sheffer, Ruth (2000-09-01). “Concrete and formal arguments: The case of division by zero” (英語). Mathematics Education Research Journal 12 (2): 92–106. doi :10.1007/BF03217078 . ISSN 2211-050X . https://doi.org/10.1007/BF03217078 . ^ 高橋 丈夫 (2017). “整数の除法の導入時における児童の「測定の考え」の様相に関する一考察”. 日本数学教育学会誌 99 (12): 2-11. doi :10.32296/jjsme.99.12_2 . ^ a b Kaplan, Robert (1999). The Nothing That Is: A Natural History of Zero (英語). New York: Oxford University Press. pp. 68–75 . ISBN 978-0-19-514237-2 。 ^ ロバート・カプラン、松浦俊輔(訳)、2002、『ゼロの博物誌』、河出書房新社 ISBN 978-4-309-25157-8 p. 107 ^ J J O'Connor and E F Robertson (November 2000). "Zero" . 2008年11月16日閲覧 。 ^ 田中一之 『数学基礎論序説』(第二版)裳華房 、2021年、199頁。ISBN 978-4-7853-1575-7 。 ^ 高橋正子『コンピュータと数学』朝倉書店 、2016年、iv, 19, 49頁。ISBN 978-4-254-11752-3 。 ^ “How to Divide by Zero ” (英語). 1 divided by 0 . 2022年2月17日 閲覧。 ^ 山田祥寛『独習C# 第5版』2022、p.93 ^ 株式会社インプレス (2022年7月27日). “Androidの「電卓」アプリはゼロで割ると答えが「ん」になる(ことがある)/皆さんの端末ではどうですか?【やじうまの杜】 ”. 窓の杜 . 2022年7月27日 閲覧。 ^ 沼田哲史『C言語 本格トレーニング: 基礎から応用までを徹底解説!』2020、p.13 ^ 『現場ですぐに使える! Python プログラミング逆引き大全357の極意』秀和システム、2022、p.117 ^ a b 山田 祥寛『独習C# 新版』翔泳社、2017、「3.1.4 除算とデータ型」の章。 ^ 山田 祥寛『独習Ruby 新版』翔泳社、2021、p.84 ^ 山田祥寛『独習Java 新版』翔泳社、2019、p.86 ^ Joe Celko『プログラマのためのSQL 第4版』翔泳社、2013, p.214 ^ 『SQL Hacks: データベースを自由自在に操るテクニック』オライリー・ジャパン、2007、p.108) ^ 日本規格協会『情報処理: ソフトウェア編』(JIS ハンドブック) 1990、p.622 ^ “Sunk by Windows NT” . Wired News. (1998年7月24日). http://www.wired.com/science/discoveries/news/1998/07/13987 2008年11月16日 閲覧。 ^ “oh shi- ”. Urban Dicthionary. 2011年10月11日 閲覧。 ^ Chiang, Ted (2015). Stories of Your Life and Others (英語). Picador. ISBN 978-1-4472-8923-4 。 ^ 邦題は https://iss.ndl.go.jp/books/R100000002-I000004238766-00 で確認できる。 ^ “Chuck Norris can divide by zero ”. Chuck Norris Facts. 2011年10月11日 閲覧。 ^ “ゼロ除算 ゼロ除算|カードギャラリー|マジック:ザ・ギャザリング 日本公式ウェブサイト ”. 2023年11月25日 閲覧。
参考文献
関連項目
外部リンク