提问人:Iti 提问时间:12/23/2022 更新时间:12/25/2022 访问量:169
实数的浮点表示不是唯一的
Floating point representation of a real number is not unique
问:
我正在阅读有关实数的浮点表示的文章。
在任何具有算术基数 β 的实数系统中,实数 x 可以表示为
x=(0.d 1 d2 --- d t dt+1---) β X βe (1) 其中 0≤di≤β-1
现在考虑二进制系统中的 (0.5)
10。
在二进制系统中,
(0.5){10}=(0.1)2 (2)
但是我们可以看到
1/2=(1/2 2)+(1/2 3)+----
(0.5)10=(0.01111---)2 (3)
从 (2) 和 (3) 中我们可以看到同一个数字有两个浮点表示。
我读到过,可以通过考虑“归一化浮点表示”(即
d1 ≠ 0)来消除这种歧义
但是对于归一化的浮点表示,我们仍然有歧义。
(0.5)10=(0.100000)2 (2(a)) (0.5)10=((0.1111111----) X 2-1) (3(a))
因此,从(2(a))和(3(a))中,我们可以看到,即使使用归一化浮点表示,歧义仍未解决。 有人能说出我是否正确吗?如何解决这种歧义?
答:
...使用归一化浮点表示,我们仍然存在歧义。
没有歧义。
(2(a)) (0.5)10 = (0.100000)2 (3(a))I (0.5)10 = ((0.1111111----)2 X 2-1 (作为无穷级数) (3(a))F (0.5)10 = ((0.11111111----)2 X 2-1
(作为有限级数)
(2(a))为真。
(3(a))我是真的。
(3(a))F 为 false,因为浮点值中的项数是有限的。这并不比 1.0 等于 0.9999999999999999 更正确。
(3(a))I对于普通二进制浮点是不可能的。除 +0.0 和 -0.0 外,所有有限值只有 1 种编码。
评论
0.5
评论