gpt4 book ai didi

floating-point - 了解浮点表示错误;我的想法有什么问题?

转载 作者:行者123 更新时间:2023-12-04 16:49:01 25 4
gpt4 key购买 nike

我在理解为什么有些数字不能用浮点数表示时遇到了一些麻烦。

正如我们所知,普通的浮点数会有符号位、指数和尾数。例如,为什么不能在这个系统中准确地表示 0.1;我想到的方法是将 10(bin 中的 1010)放入尾数,将 -2 放入指数。据我所知,这两个数字都可以用尾数和指数准确表示。那么为什么我们不能准确地表示 0.1 呢?

最佳答案

如果您的指数是十进制的(即它代表 10^X),您可以精确地代表 0.1——但是,大多数浮点格式使用二进制指数(即它们代表 2^X)。因为没有整数 XY使得 Y * (2 ^ X) = 0.1 ,您无法在大多数浮点格式中精确表示 0.1。

某些语言的类型具有两个指数。例如,在 C# 中,有一种数据类型恰如其分地命名为 decimal这是一种带有十进制指数的浮点格式,因此它支持存储像 0.1 这样的数字,尽管它还有其他不常见的属性:decimal类型可以区分0.10.10 ,而且 x + 1 != x 总是正确的对于 x 的所有值.

不过,对于最常见的用途,C# 也有 floatdouble无法精确存储 0.1 的浮点类型,因为它们使用二进制指数(如 IEEE-754 中定义)。二进制浮点类型使用更少的存储空间,速度更快,因为它们更容易实现,并且定义了更多的操作。一般情况decimal仅用于所有十进制值的精确表示很重要而存储、速度和操作范围不重要的财务值。

关于floating-point - 了解浮点表示错误;我的想法有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6275327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com