2011-03-25 51 views
1

因此,數學中的方程(如p * 1/p = 1)將始終保存在計算機中?是否有無損分割算法?

+2

取決於你在做什麼。如果p是一個有理數,可以用一些方法來表示,例如Python中的'fractions'模塊。如果p是一個任意表達式,則可以使用符號數學包。你需要更精確地定義你的問題。 – 2011-03-25 03:12:37

回答

6

如果你將你的號碼存儲爲分子/分母對,那麼,是的,你可以使它無損。由此,我的意思是數字10,除以3時,不是存儲爲3.3333333,而是存儲爲{10,3}。這意味着,當您再次乘以3時,它將變爲10

當然,這可能不適用於所有邊緣情況。您仍然無法表示無理數,如PI或2的平方根,因爲它們既不能表示爲有限十進制序列,也不能表示爲比率。

但是,僅爲了劃分(使用有理數),我無法想象它不起作用的邊界情況。

0

使用GNU GMP等任意精度算術庫來獲得「無限精度」數字。該庫可在:

http://gmplib.org/

+0

'任意'不是'無限',雖然我會假設你知道,因爲你引用了違規術語:-)我也很難推薦GMP的任何健壯的代碼,因爲它有(我認爲是致命的對於一般用途的圖書館而言)當內存耗盡時退出的缺陷(從你的下面拉下地毯)。當然,這只是在最極端的情況下才有可能,但因爲無論如何GMP都可以使用,所以我不是那麼喜歡它。但是對於代碼來說這是一個可行的選擇,你不介意這種情況很可能就是這種情況。 – paxdiablo 2011-03-25 03:23:07

+0

而且,雖然僅僅是個人經驗,但我總是發現MPIR(一種GMP叉)更適合討論和協助。因人而異。他們也做本地Windows。 – paxdiablo 2011-03-25 03:27:12