2
最近,我驚訝地發現,Emacs的允許除以零:爲什麼Emacs允許零除?
(/ 1.0 0)
=> 1.0e+INF
花車這隻作品,整數提高預期的錯誤:
(/ 1 0)
=> Arithmetic error
我試圖尋找此,可以發現沒有用。
這種行爲的原因是什麼?
最近,我驚訝地發現,Emacs的允許除以零:爲什麼Emacs允許零除?
(/ 1.0 0)
=> 1.0e+INF
花車這隻作品,整數提高預期的錯誤:
(/ 1 0)
=> Arithmetic error
我試圖尋找此,可以發現沒有用。
這種行爲的原因是什麼?
從手冊:「Emacs使用IEEE浮點標準,這是所有現代計算機支持」。
下面是爲什麼IEEE浮點標準的工作方式是這樣一個很好的解釋: http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html#919
這是標準的C行爲。這是完全標準和合乎邏輯的:除以inf - 讓你的零回來。 –
雖然我們習慣了斷言「你不能被0除」,但它實際上並不是真的,所以這種行爲實際上比其他行爲更正確 –
Infinity不是一個數字,所以這仍然是正確的。但是,還有更多。所有的計算機算術都是模塊化的,因爲在所有的操作中,實際上不是加或減,它們是「加模2^32」或其他。因此,在雙精度浮點數的情況下,除零被定義,因爲它具有使其工作的特殊值。你可以認爲這些特殊值與複數中的一個平方根類似,因爲它們需要做一些更大的定理。 – 2013-10-25 08:32:35