说明在确定是否一个十进制数在基地
当试图找到我碰到这个传来了回答,并想知道如果这是真的,为什么它是一个有限表示。说明在确定是否一个十进制数在基地
https://*.com/a/489870/5712298
如果任何人都可以向我解释或链接我到一个页面解释它,将是巨大的。
#1的标记不支持数学符号很好,这个大多数读者将是程序员,所以我将使用通用编程表达式语法:
* multiplication
^ exponentiation
/division
x[i] Element i of an array x
== equality
PROD product
这本书以是否给出问题的基数r
终止分数a/(r^n)
,有一个端接基数s
分数b/(s^m)
具有完全相同的值,a
,b
整数,r
和s
正整数,n
和m
非负intege RS。
a/(r^n)==b/(s^m)
相当于b==a*(s^m)/(r^n)
。 a/(r^n)
正好等于一些基数s
终止分数如果且仅当,存在一个正整数m
使得a*(s^m)/(r^n)
是一个整数。
考虑的r
,PROD(p[i]^k[i])
的主要因子。如果因为某些i
,p[i]^k[i]
是在r
的因式分解的一个术语,然后p[i]^(n*k[i])
是在r^n
的因式分解的术语。
a*(s^m)/(r^n)
是一个整数,当且仅当,在r^n
的因式分解每p[i]^(n*k[i])
也是a*(s^m)
首先假设p[i]
一个因素也是s
一个因素。那么对于足够大的m
,p[i]^(n*k[i])
是因子s^m
。
现在假设p[i]
不是s
一个因素。当且仅当它是因子a
时,p[i]^(n*k[i])
是因子a*(s^m)
。
为一个非负整数m
使得b==a*(s^m)/(r^n)
是一个整数的存在的必要且充分条件是,对于在r
素因子分解每个p[i]^k[i]
,无论p[i]
是s
或p[i]^(n*k[i])
一个因子是因子的a
。
将此应用于r=10
和s=2
的常见情况下,r
的素因分解为(2^1)*(5^1)
。 2是因数2,所以我们可以忽略它。 5不是,所以我们需要5^n
是因子a
。
考虑某些特定情况下:
十进制0.1
是1/10
,5不是1因子,所以没有确切二进制分数当量。
十进制0.625
,625/(10^3)
。 5^3
是125,这是一个625的因子,所以有一个确切的二进制分数等价。 (它是二进制0.101)。
参考答案https://*.com/a/489870/5712298中的方法相当于这个从小数到二进制。它需要一些工作来扩展到一般情况,以允许指数不为1的素数因子。
您链接的答案决定了十进制值是否可以完全用_binary浮点数表示,尽管答案只是表示_binary_,它本身是模棱两可的。因为你的问题的标题可能需要改变,所以它是非常具体的,而不仅仅是“_a base_”。 – Clifford
我认为链接中的方法描述存在错误,请参阅我的评论添加到它。 – Clifford