有没有办法判断小数在 C# 中是终止还是重复

本文关键字:终止 判断 小数 有没有 | 更新日期: 2023-09-27 17:55:32

可能的重复项:
如何知道分数中的重复小数?

有没有办法判断小数是终止还是重复?

例:我有分数:1/3,它是重复的小数 - 0.33333333333333333333我有分数 1/2,它终止小数 - 0.5

我不知道我该怎么做。

有没有办法判断小数在 C# 中是终止还是重复

根据维基百科,如果分数可以用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)格式,因此是终止分数。