固定点vs浮点数

时间:2011-09-23 05:53:58

标签: numbers computer-science representation

由于难以在Google上阅读有关它们的定义,我无法理解定点和浮点数。但是我读过的没有提供一个简单的解释,说明它们到底是什么。我可以用例子得到一个简单的定义吗?

5 个答案:

答案 0 :(得分:118)

固定点编号具有为整数部分(小数点左侧的部分)保留的特定位数(或数字)和为小数部分保留的特定位数(右侧部分)小数点)。无论您的数量有多大或多小,它都将始终使用相同的位数。例如,如果您的定点格式为十进制IIIII.FFFFF,则您可以表示的最大数字为99999.99999,最小的非零数字为00000.00001。处理这些数字的每一段代码都必须具有小数点所在的内置知识。

浮点数不会为整数部分或小数部分保留特定的位数。相反,它会为该数字保留一定的位数(称为尾数有效数据)和一定数量的位来说明其中小数位数(称为指数)。因此,为指数保留2位数的10位数的浮点数可能代表9.9999999e+50的最大值和0.0000001e-49的最小非零值。

答案 1 :(得分:29)

固定点数只表示小数点后面有固定的位数。浮点数允许小数点后的位数变化。

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

通常,当使用固定点时,程序员实际使用整数,然后假设某些数字超出小数点。例如,我可能想保留两位数的精度,因此值100意味着实际意味着1.00,101意味着1.01,12345意味着123.45等。

浮点数更通用,因为它们可以用相同的方式表示非常小或非常大的数字,但是必须为小数位所在的位置提供额外的存储会有一点小小的惩罚。

答案 2 :(得分:3)

根据我的理解,定点运算是使用整数完成的。其中小数部分以固定的位数存储,或者数字乘以需要的小数精度位数。

例如,如果需要存储数字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。 See this Wikipedia link for more information on this.

答案 3 :(得分:2)

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

答案 4 :(得分:-4)

取数字123.456789

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

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