首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算双精度+浮点精度

如何计算双精度+浮点精度
EN

Stack Overflow用户
提问于 2011-01-06 09:32:31
回答 2查看 24K关注 0票数 11

我一直在尝试寻找如何计算浮点数/双精度数/范围数-3.402823e38..3.402823e38和-1.79769313486232e308.1.79769313486232e308。

对于int32,您需要做2^32=4294967296/2,得到的范围是-2147483648到2147483647。那么我该如何计算出浮点数和双精度数的精度呢?我想我在搜索错误的术语,因为什么都没有出现。

EN

回答 2

Stack Overflow用户

发布于 2011-01-31 22:41:09

我已经从不同方面(当然不是全部)讨论了浮点格式。这个答案可能会对你有所帮助:https://stackoverflow.com/questions/4851671/printing-double-without-losing-precision

票数 0
EN

Stack Overflow用户

发布于 2011-01-06 09:56:30

它不是那么容易计算的。这是因为浮点数和双精度数的实现方式。它们都分为两部分:一部分是基数,另一部分是指数。我认为浮点数被分成24位基数和8位指数。但我对此不太确定!我将基于这一事实进行进一步的计算和假设,因此这些计算可能都是错误的,但它们说明了正确的原则。这些规范在不同的语言中也可能不同,即使有一些标准说它们不应该。但是在编程时没有什么是理所当然的:p

这意味着基数可以在-8388608到8388607之间,指数可以在-128到127之间。

然后,当使用数字时,计算机是这样想的:

基*10^指数

这导致最大可能的数字是8388607 *10^127,这将是...很多。但它将包含120个零,因为它不能指定超过7个数字。

随着数字的增长,数字的准确性会降低。这意味着您的问题的格式不正确;)如果您知道需要多少个正确的小数位数,则只能为浮点数指定一个有效范围。如果您需要2个保证精确小数的可能性,那么float的范围是-83885到83885。

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

https://stackoverflow.com/questions/4610999

复制
相关文章

相似问题

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