2012-02-23 75 views
2

你知道如何在C中做一個十進制數的合理逼近(類似於大鼠 Matlab函數)?C語言中的matlab大鼠函數

更新

如果我們希望有一個P/Q雙號的近似,速戰速決可能是:

int factor=1000000; 
P=floor(number*factor); 
Q=factor; 

誤差小於(數/因子) ,這是微不足道的。

回答

3

Continued fractions可以用來計算在某種意義上最優的實數的有理逼近。這樣輸入0.33333333你有機會獲得1/3而不是3333/10000。

1

您可以按照您在更新中所做的操作完成相同的操作,但請檢查頂部和底部之間的最高公因子並進行簡化。例如,0.5會去500000/1000000做你的方法。他們有一個共同的因素500000,所以你可以將頂部和底部除以得到1/2。 Google有很多hcf函數的例子,比如this one(編輯:和this令人印象深刻的列表)。