Floating point 小数点数字是否可以表示任何值而不存在更改和舍入问题

Floating point 小数点数字是否可以表示任何值而不存在更改和舍入问题,floating-point,precision,floating-accuracy,Floating Point,Precision,Floating Accuracy,我说的对吗?它可以表示任何“有限值”(不是1/3的情况),无需任何修改,这样就不会有“不可表示”的数字,也不会在任何数学计算后累积舍入误差?如果是,怎么可能?我的意思是,毕竟DFP数字有一个精度限制,所以在某一点上,他们将无法存储“真实”值,并被迫以某种方式对其进行取整 但不管怎么说,它是否有任何“非有限”数字(我想知道是否有更好的术语来表示这些值),如果不做任何修改(比如已经提到的二进制浮点数的0.1)?您注意到有一些数字,比如1/10,它们可以用以10为基数的有限位数表示,但不能用以2为基数

我说的对吗?它可以表示任何“有限值”(不是1/3的情况),无需任何修改,这样就不会有“不可表示”的数字,也不会在任何数学计算后累积舍入误差?如果是,怎么可能?我的意思是,毕竟DFP数字有一个精度限制,所以在某一点上,他们将无法存储“真实”值,并被迫以某种方式对其进行取整


但不管怎么说,它是否有任何“非有限”数字(我想知道是否有更好的术语来表示这些值),如果不做任何修改(比如已经提到的二进制浮点数的0.1)?

您注意到有一些数字,比如1/10,它们可以用以10为基数的有限位数表示,但不能用以2为基数的有限位数表示。。。然而,似乎没有任何数字可以用基数为2的有限位数来表示,而不是基数为10的有限位数。那是真的

你错在把它看作是数字本身的一个基本和重要属性。实际上,“以10为基数的有限位数表示”或“以2为基数表示”并不十分重要(除了这两个基数)。如果你想知道他们的典型特征,这里是:

有理数A/b,其中A和b是无公因子的有限整数,当且仅当b可表示为2的幂乘以5的幂时,才可表示为以10为底的有限位数

所以1/10有效。7/16工程。3/500工程。83/625000工程。1/3不起作用

删除“乘以5的幂”后,base-2的等效属性与base-10的等效属性相同。所以7/16仍然有效,但1/10不起作用。Base-10能够用有限位数来表示比Base-2更大范围的有理数(因为它具有2所具有的所有素数因子,然后是一些素数因子)


但同样,这不是基数10以外的数字的基本属性。在另一个使用base-60的星球上,外星人嘲笑我们不能用有限的数字表示1/3。

有限状态机怎么能代表无限的事物?你应该重新组合这个问题。首先,你从“我说得对吗…”这个糟糕的形式开始,它是断言和问题的组合。然后你要求证明你的断言!这在很大程度上取决于十进制浮点数。如果它们是多精度的(也有固定精度的十进制浮点数),它们可以表示很多,但即使它们不是无限的。不过,它们可以存储任何适合内存的小数点表示的值。如果根据定义排除所有“1/3情况”,那么在二进制情况下当然就不会有任何麻烦的1/10。你的问题是什么?十进制浮点数可以用足够短的十进制分数表示法精确地表示每个数字。二进制浮点数可以用足够短的二进制分数表示法精确地表示每个数字。。。