Floating point 是否存在不能用定点和/或浮点类型表示的有限十进制数?

Floating point 是否存在不能用定点和/或浮点类型表示的有限十进制数?,floating-point,fixed-point,Floating Point,Fixed Point,让我们具体地谈谈有限的32位十进制数,也就是说,可以容纳在32位以内的任何数字,即不小于1/3,因为分数部分无限延续,如0.333333… 是否存在不能用浮点数或定点整数表示的有限32位十进制数?如果答案是肯定的,我如何计算十进制数是否可以用这两种类型准确地表示只能近似地用二进制定点或二进制浮点表示法表示。如果是这样:可以将每个终止的十进制数写成分母为10的幂的分数。将该分数减至最低值。答案是,如果(且仅当)结果的分母是2的幂,那么它可以精确地表示为二进制浮点(具有足够大的指数)或定点(具有足够

让我们具体地谈谈有限的32位十进制数,也就是说,可以容纳在32位以内的任何数字,即不小于
1/3
,因为分数部分无限延续,如
0.333333…


是否存在不能用浮点数或定点整数表示的有限32位十进制数?如果答案是肯定的,我如何计算十进制数是否可以用这两种类型准确地表示只能近似地用二进制定点或二进制浮点表示法表示。如果是这样:可以将每个终止的十进制数写成分母为10的幂的分数。将该分数减至最低值。答案是,如果(且仅当)结果的分母是2的幂,那么它可以精确地表示为二进制浮点(具有足够大的指数)或定点(具有足够大的比例因子)。注意,当且仅当最低项中的分母不可被5整除时,才会发生这种情况。不,可以用定点或浮点表示的数字正是那些最低项中的分母为2的幂(又称二元有理数)的分数,即
b/2^k
。只要比例因子至少为
2^k
,就可以在固定点上精确表示。只要尾数至少为
n
位,并且指数范围包括
k-n
,其中
n
是整数
b
中的位数,就可以用浮点表示。当然,对于任何给定的固定点和浮点格式对(可选择比例因子、尾数和指数位),通常会有一些值可以在其中一个中精确表示,但在另一个中无法精确表示。但原则上可以精确表示的值集是相同的。例如,
1/65536=0.0000152587890625
可以在IEEE单精度浮点中精确表示(尾数为1,指数为
-16
)。但不能用比例因子为4096的定点表示,因为它不是
1/4096
的整数倍。