2013-01-23 41 views
0

可能重複:
How to know the repeating decimal in a fraction?有沒有辦法來判斷一個小數是在C#中終止還是重複?

有沒有辦法判斷一個小數終止或重複?

實施例: 我有分數:1/3和它的重複十進制 - 0.33333333333333333333 我有分數1/2和它的終止十進制 - 0.5

我沒有任何想法如何我可以做到這一點。

+0

相關:http://stackoverflow.com/questions/8946310/how-to-know-the-repeating-decimal-in-a-fraction – Oded

+0

你是什麼意思的「重複」?非理性的數字?任何不能用浮點數表示的數字?由雙? – Oren

+0

謝謝,我在stackoverflow上搜索,但我沒有看到。 – Yozer

回答

3

根據Wikipedia,如果分數可以以k/(2^n * 5^m)的形式表示,其中k,n和m是整數,則分數終止。

#assumes that the fraction is already fully reduced 
#e.g. numerator and denominator are coprime 
function isTerminating(numerator, denominator): 
    while denominator % 2 == 0: 
     denominator /= 2 
    while denominator % 5 == 0: 
     denominator /= 5 
    return denominator == 1 

如果你有在IEEE浮動的比例,那麼它永遠終止,只要它不是NaN或+/-無窮大。漂浮物中的有限數字表示爲c * b^q。條款可能重新排列爲c/(b^-q)。 b總是2或10,所以這個數字符合k/(2^n * 5^m)格式,因此是終止分數。

相關問題