引用:
作者y11ytt00
當然也有整數精確度
整數部份不也是一樣的道理嗎?
不論是整數或小數
他都是佔一個bit
加減乘除法器
不會因為
整數或小數
設計原理和架構而有所不同
|
你說的沒錯,但想法是錯的。
不管整數、單(倍)精度浮點數都只是一連串的 0, 1
對電腦而言 int32 的 2 x 2 就是 00000000000000000000000000000010 x 00000000000000000000000000000010
在這裡,我們假設每一個位元出錯的機率都是一樣的,也就是「出錯」不表示只有小數值會改變,例如,乘數的第二個位元出錯,由零變成一,那結果就會和正確數值差
二十億倍.....同理,浮點數的構造雖然比較複雜,但出錯的結果也會大致是這種情形。
因此以十進位的小數精確度觀念來思考電腦運算出錯的情形是錯的,可能一個位元的出錯,就會造成億萬倍的差別.....
以 prime95 來說,目前我只遇過「數值不在預測的 0.4 之內」的錯誤,也就是某個運算結果應該小於 0.4, 從這裡我們就可以計算 prime95 的可靠性。
以浮點數來說,正負數大致一樣多的,而 0.4 這個值十分接近零(我們當成零來看),因此我們可以假設,一但有一個位元出錯,可能造成的結果,不是大於 0.4, 就是小於 0.4, 而且這兩者的機率一樣,其中只有大於 0.4 的值才會被判為錯誤......
所以結論是,prime95 有二分之一的機會找出你的電腦是不是有可能會出錯,所以當你跑一小時沒出錯時,只能代表這一小時中沒出錯的機率是二分之一;同理,當你跑二十四小時,代表二十四小時中,沒出錯的機率是二分之一。