由于难以在Google上阅读有关它们的定义,我无法理解定点和浮点数。但是我读过的没有提供一个简单的解释,说明它们到底是什么。我可以用例子得到一个简单的定义吗?
答案 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
。在对此数字执行数学运算时,我们会使用此规则集。将5620
或56.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。 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
浮点可让您以极高的精度表示大多数数字。固定不太精确,但计算机更简单..