我只是无法理解定点和浮点数,因为在 Google 上很难阅读关于它们的定义。但我读过的任何一篇文章都没有提供足够简单的解释来说明它们的真实含义。我可以通过示例得到一个简单的定义吗?
6 回答
定点数具有为整数部分(小数点左侧的部分)保留的特定位数(或数字)和为小数部分(小数点右侧的部分)保留的特定位数观点)。无论您的数字有多大或多小,它总是会为每个部分使用相同数量的位数。例如,如果您的定点格式是十进制,IIIII.FFFFF
那么您可以表示的最大数字是99999.99999
,最小的非零数字是00000.00001
. 处理这些数字的每一段代码都必须内置知道小数点在哪里。
浮点数不为整数部分或小数部分保留特定位数。相反,它为数字保留一定数量的位(称为尾数或有效位)和一定数量的位来说明该数字中小数位的位置(称为指数)。所以一个浮点数占用 10 位,其中 2 位为指数保留,可能表示 的最大值9.9999999e+50
和 的最小非零值0.0000001e-49
。
定点数仅表示小数点后有固定位数。浮点数允许小数点后的位数不同。
例如,如果您有一种存储数字的方法,它要求小数点后恰好有四位数字,那么它就是定点数。没有这个限制,它就是浮点数。
通常,当使用定点时,程序员实际上使用了一个整数,然后假设某些数字超出了小数点。例如,我可能想保持两位数的精度,所以值 100 表示实际上表示 1.00,101 表示 1.01,12345 表示 123.45,等等。
浮点数更通用,因为它们可以以相同的方式表示非常小的或非常大的数字,但是必须为小数位的位置提供额外的存储空间会带来一些损失。
据我了解,定点算术是使用整数完成的。其中小数部分存储在固定数量的位中,或者该数字乘以需要多少位小数精度。
例如,如果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 位用于符号。有关这方面的更多信息,请参阅此 Wikipedia 链接。
术语“定点”是指表示数字的相应方式,在小数点之后(有时在小数点之前)有固定位数。使用浮点表示,小数点的位置可以相对于数字的有效数字“浮动”。例如,具有统一小数点放置约定的定点表示可以表示数字 123.45、1234.56、12345.67 等,而浮点表示还可以表示 1.234567、123456.7、0.00001234567、1234567000000000 等。
它是创建的,定点数不仅在点(数字)之后有一些固定的小数位数,而且在数学上用负幂表示。非常适合机械计算器:
eg smth 的价格是 23.37 美元(点后 Q=2 位数。)机器知道点应该在哪里!
拨打电话 123.456789
- 作为一个整数,这个数字是 123
- 作为一个固定点 (2),这个数字是 123.46(假设你四舍五入)
- 作为一个浮点数,这个数字是 123.456789
浮点数可让您以极高的精度表示大多数数字。固定不太精确,但对计算机来说更简单..