2011-07-20 50 views
0

據我所知,這使得算法更快,使用更少的存儲空間,而且這些將成爲軟件在前幾十年的硬件上運行的關鍵特性,但這仍然是一個重要特性嗎?如果計算是用精確的有理算術完成的,那麼根本不會有舍入誤差,這將簡化許多算法,因爲您不再需要擔心災難性的取消或類似的事情。爲什麼數字在標準計算機算法中四捨五入?

+4

不,數字不是四捨五入的。 CPU使用你給它的每一點。用兩個手指而不是十個計數會產生副作用,通過將浮點值四捨五入到有限的數字來隱藏副作用。否則,與10/3問題沒有什麼不同,當你用3個手指數時,結果只會有很好的結果。 –

+3

不是所有的數字都是有理性的:無論您的精度如何,您都無法在計算機上精確乘以pi。 – Wyzard

+1

不要忘記無理數字http://en.wikipedia。org/wiki/Irrational_number – MadcoreTom

回答

3

浮點比任意精度和符號包快得多,12-16個有效數字通常適用於要求非整數計算相關的科學/工程應用。

1

許多數值算法仍然需要固定精度的數字才能表現良好。這樣的計算可以用硬件來實現,因爲這些數字完全符合寄存器,而任意的精確計算必須用軟件來實現,並且兩者之間存在巨大的性能差異。詢問任何以數字爲生的人,不管他們對X數量變慢的事情是否可以接受,他們可能會說「不,這完全不可行」。

另外,我想你會發現具有任意精度是不切實際的,甚至是不可能的。例如,小數位數可以增長得足夠快,您可以放棄一些。然後你又回到了原點:圓號問題!

最後,有時超過一定精度的數字無論如何不重要。例如,通常有效數字的數量應該反映實驗不確定性的水平。

那麼,你有哪些算法?

0

傳統上,整數算法在硬件中實現起來更容易,更便宜(使用更少的空間,因此您可以安裝更多的單元)。特別是當你進入DSP領域時,這可能會產生很大的不同。

1

在絕大多數計算中,精確計算答案所需的數字大小將迅速增長,超出計算值得努力的程度,並且在許多計算中,它會超出精確計算的地步成爲可能。考慮到即使像一個簡單的三階IIR濾波器一樣運行十幾次迭代也需要分母中有幾千比特的分數;運行算法數千次迭代(幾乎不是一個不尋常的操作)可能需要比分母中的位數多於宇宙中存在的原子。

2

編程語言ABC儘可能使用有理數(x/y,其中x和y是整數)。

有時計算會變得非常因爲分子和分母變得非常

因此,事實證明,如果不對分子和分母設置某種限制,這是一個壞主意。