定点与浮点数

我只是不能理解固定点和浮点数,因为很难在谷歌上阅读它们的定义。但是我读过的书中没有一本能够简单地解释它们到底是什么。我可以得到一个简单的例子定义吗?

167653 次浏览

号码是123.456789

  • 作为一个整数,这个数字应该是123
  • 作为一个定点(2) ,这 数字是123.46(假设你四舍五入)
  • 作为一个浮点数,这个数字应该是123.456789

浮点数使您能够以极高的精度表示大多数数字。固定是不太精确,但更简单的计算机。.

一个固定的点数就意味着在小数点后面有一个固定的位数。浮点数允许小数点后的数字数量可变。

例如,如果有一种存储数字的方法,需要在小数点后正好四位数字,那么它就是固定点。如果没有这个限制,它就是浮点数。

通常,当使用固定点时,程序员实际上使用一个整数,然后假设某些数字超出了小数点。例如,我可能想保持两位数的精度,所以100表示1.00,101表示1.01,12345表示123.45,等等。

浮点数的用途更为广泛,因为它们可以以相同的方式表示非常小或非常大的数字,但是对于小数位的位置需要额外的存储空间,这样做的代价很小。

固定点数具有为整数部分(小数点左边的部分)保留的特定位数(或位数)和为小数部分(小数点右边的部分)保留的特定位数。无论你的数字是大是小,它总是使用相同的位数为每一部分。例如,如果您的定点格式是十进制 IIIII.FFFFF,那么您可以表示的最大数字将是 99999.99999,最小的非零数字将是 00000.00001。处理这些数字的每一位代码都必须内置知道小数点在哪里。

浮点数不为整数部分或小数部分保留特定的位数。相反,它为数字(称为 Mtissa意义重大)保留了一定数量的位,并且在小数位(称为 指数)内保留了一定数量的位来表示 哪里。因此,一个浮点数占10个数字,其中2个数字为指数保留,这个浮点数可能代表 9.9999999e+50的最大值和 0.0000001e-49的最小非零值。

术语“固定点”指的是数字表示的相应方式,在小数点之后,有时在小数点之前有固定的位数。 使用浮点表示法,小数点的位置可以相对于数字的有效数字“浮动”。 例如,具有统一小数点放置约定的定点表示可以表示数字123.45、1234.56、12345.67等,而浮点表示可以另外表示1.234567、123456.7、0.00001234567、12345670000000等。

据我所知,定点是用整数表示的。其中小数部分以固定的位数存储,或者该数字乘以所需的小数精度位数。

例如,如果需要存储数字 12.34,而且我们只需要小数点后两位数字的精度,则该数字乘以 100即可得到 1234。在对这个数字进行数学计算时,我们使用这个规则集。将 562056.20加入到这个数字中将产生数据中的 685468.54

如果我们想计算一个固定点数的小数部分,我们使用模(%)操作数。

12.34(伪代码) :

v1 = 1234 / 100 // get the whole number
v2 = 1234 % 100 // get the decimal number (100ths of a whole).
print v1 + "." + v2 // "12.34"

浮点数在编程中是完全不同的情况。当前的浮点数标准使用23位表示数字的数据,8位表示指数,1位表示符号。有关这方面的更多信息,请参见维基百科的链接。

它是创建的,定点数不仅有一些固定的小数后点(位数) ,但在数学上表示为负幂。非常适合机械计算器:

例如,smth 的价格是23.37美元(Q = 点后面的2位数)机器知道要点在哪里!

有一个关于 ABc0的定点编号,但是很少提到我认为的拥有属性。关键区别在于浮点数字有一个由舍入或截断引起的常量 亲戚(百分比)错误。定点数字具有常数 绝对的错误。

使用64位浮点数,您可以确定 x+y的答案永远不会偏差超过1位,但是偏差有多大呢?这取决于 xy——如果指数等于10,那么四舍五入最后一位表示 2^10=1024的错误,但如果指数为0,那么四舍五入一位表示 2^0=1的错误。

对于定点数,位始终表示相同的数量。例如,如果我们在小数点前有32位,在小数点后有32位,这意味着截断错误最多将答案改变为 2^-32。如果你使用的数字都大致相当于 1,那么这很好,因为它可以获得很高的精度,但是如果你使用的数字有不同的单位,那就糟糕了——谁在乎你计算一个 googol 米的距离,然后得到一个 2^-32米的误差呢?

一般来说,浮点数可以让您表示 很多更大的数字,但是对于中等大小的数字,代价是更高的(绝对)误差。如果你提前知道你要表示的数字有多大,那么固定点会得到更好的精确度,这样你就可以把小数精确地放在你想要的地方,从而获得最大的精确度。但是如果您不知道您使用的是什么单位,那么浮点数是一个更好的选择,因为它们代表的范围很广,精度也足够好。