重複の可能性:
分数の繰り返し小数を知るには?
小数が終了しているか繰り返しているかを確認する方法はありますか?
例: 分数: 1/3 があり、10 進数を繰り返しています - 0.33333333333333333333 分数 1/2 があり、10 進数を終了しています - 0.5
どうすればできるのかわかりません。
重複の可能性:
分数の繰り返し小数を知るには?
小数が終了しているか繰り返しているかを確認する方法はありますか?
例: 分数: 1/3 があり、10 進数を繰り返しています - 0.33333333333333333333 分数 1/2 があり、10 進数を終了しています - 0.5
どうすればできるのかわかりません。
ウィキペディアによると、 の形式で表すことができる場合、分数は終了してい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 float に分数がある場合、NaN または +/- 無限でない限り、常に終了します。float の有限数は として表されc * b^q
ます。用語は、 となるように再配置できますc / (b^-q)
。b は常に 2 または 10 であるため、数値はk/(2^n * 5^m)
形式に適合し、端数になります。