固定点vs浮点数

我只是不明白定点和浮点数,因为在Google上很难看清它们的定义。 但是,我没有读到这些内容,他们提供了一个足够简单的解释。 我能用例子得到一个简单的定义吗?

固定点编号具有为整数部分(小数点左边的部分)保留的特定位数(或数位)和为小数部分(小数点右边的部分)保留的特定位数点)。 不pipe你的号码有多大或多小,它总是会为每个部分使用相同的比特数。 例如,如果你的定点格式是十进制的IIIII.FFFFF那么你可以表示的最大数字是99999.99999 ,最小的数字是00000.00001 。 处理这些数字的每一位代码都必须具有小数点位置的内置知识。

浮点数不保留整数部分或小数部分的特定位数。 相反,它为数字(称为尾数有效数字 )和一定数量的比特保留一定数量的比特,以表示小数位数(称为指数 )的位置。 因此,一个浮点数占用10个数字,其中2位为指数保留,可能代表最大值9.9999999e+50和最小值0.0000001e-49

定点数只是意味着小数点后有一个固定的数字位数。 浮点数允许小数点后的位数变化。

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

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

浮点数是更通用的,因为它们可以以相同的方式表示非常小或非常大的数字,但是在小数位所在的位置必须具有额外的存储空间是一个小的代价。

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

从我的理解来看,定点algorithm是用整数来完成的。 其中小数部分存储在固定数量的位中,或者数字乘以需要多less位数的小数精度。

例如,如果需要存储数字12.34 ,并且我们只需要小数点后两位精度的数字,则数字乘以100得到1234 。 当对这个数字进行math运算时,我们会使用这个规则集。 将562056.20添加到这个数字将产生6854数据或68.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,但为符号。 请参阅此维基百科链接了解更多信息。

号码是123.456789

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

浮点让你用大量的精度代表每个数字。 固定不太精确,但对电脑更简单。

Interesting Posts