0.001 .. 0.999 范围内有多少个数字不能表示为浮点数?

问题描述 投票:0回答:1

众所周知,并非所有数字都可以表示为浮点数。例如 0.1 没有精确的浮点表示。

已经有一个问题,一个浮点数可以在给定范围内表示多少个值?但是这个问题更多地讨论了大数。很明显,并非所有如此大的数字都可以表示为浮点数。一定有间隙。

我对小数字感兴趣。假设我们查看从 0.001 到 0.999 的 3 位十进制数。其中有多少不能准确地表示为浮点数?我们可以创建一个列表吗?

还有一个类似的问题,32位浮点数可以表示多少个0-1之间的数字?但是这个问题问到底有多少个浮点数?这不是我的问题。我想知道这些数字与十进制数字 0.001 到 0.999 的匹配程度。

我知道,有一种方法可以找出一个数字是否可以表示为浮点数(什么类型的数字可以用二进制浮点数表示?)。但这有点理论化。如果所有这些数字都具有代表性的话,我们难道不能尝试一下吗?我认为,这对于大多数实际的人来说会更方便。

我尝试为此编写一小段 C 代码。我设置了一个常数,例如 0.1。但是当我在我的 C 程序中比较该常数是否真的是 0.1 时,它告诉我这两个值是相同的。当然它们是相同的,因为我比较的值具有相同的表示错误。

floating-point precision
1个回答
0
投票

大概你的意思是二进制浮点数,并且有效数和指数的大小合理。 (“浮点”仅表示对数值进行缩放,使小数点按照指数的指示“浮动”。并不意味着以 2 为基数。浮点可以使用小数,在在这种情况下,从 0.001 到 0.999 的所有三位数十进制数都可以表示。)

在 0.001 到 0.999 的区间内,唯一可以用二进制浮点表示的三位十进制数字是 .125、.250、.375、.500、.625 和 .875。

© www.soinside.com 2019 - 2024. All rights reserved.