首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用两个整数的二进制浮点数?

使用两个整数的二进制浮点数?
EN

Stack Overflow用户
提问于 2013-12-17 22:06:07
回答 1查看 1K关注 0票数 4

今天,我了解了浮点数是如何表示二进制的。嗯,我能理解为什么IEE-754技术标准聪明地使用相对较少的位来存储大量的数字。我也明白为什么有时候用四个4位来表示每个符号是有用的(就像你可以做的一样,对吗?),当你想要精确的数字时。

总之,我的问题是,用两个整数“只是”存储浮点数字不是更方便吗?例如,您可以将逗号前的数字表示为34位整数,将逗号后面的数字表示为30位整数。那么你能写出任何数字在+-850亿和大约9个小数位数范围内,对吗?

与双精度浮点数相比,它仍然是一个相对较小的数字范围,但据我所知,它比Cobol方法好吗?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-05 16:48:55

浮点的优点是:

  1. 它们允许大量的数字。32位浮点数的范围比你建议的32.32 (64位总计)定点数要大得多。
  2. 它们具有一致的精度-- 32位浮点数几乎在其所有范围内都精确到每800万中至少有一部分(当它非常接近于零时,它就失去了精度)。
  3. 它们具有无穷大的特殊值(用于处理溢出),而不是一个数字(用于处理未定义的计算,如零除以零)。

相反,定点数的范围很有限,只在有限的范围内精确,而且没有无穷大的特殊值,而不是A数。考虑这个计算来计算向量的长度:

代码语言:javascript
复制
return sqrt(vec.x * vec.x + vec.y * vec.y);

即使最终结果符合,这种计算也可能溢出或下溢,因为sqrt的参数将有一个指数,大约是最终结果的两倍。这个问题通常并不重要,当使用浮点或双,因为他们的范围是如此巨大,但对于定点格式,这个问题很容易解决。假设有32.32个定点格式,很难计算短到70000个单位的向量的长度。

更糟糕的是,没有任何方便的方法表明计算已经溢出。

此外,定点数学没有硬件支持,这使得它在某些操作中效率较低.

也就是说,定点数学在某些特定情况下绝对是有意义的。它通常用于存储时间或世界坐标,其中一致的精度(而不是一致的相对精度)是一个好处。然而,对于一般的计算,定点计算很麻烦,而且容易出错。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20645695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档