当前位置: 首页 > 知识库问答 >
问题:

浮点值应该使用什么范围?

芮承运
2023-03-14

我知道浮点值的实现和限制——我已经阅读了你可能会将我链接到的论文——但是我不知道我应该为浮点值使用什么范围。

我想在一个实的、有限的范围内表示一个值。概念上,-1比1。我可以只使用浮点值-1到1,但我是在浪费尾数位吗?

有一个问题,但并没有确切的答案。

共有1个答案

姬正文
2023-03-14

浮点的主要点是浮点。

这意味着在1附近的相对精度与在256附近的相对精度相同。对于绝大多数应用程序,将数字缩放到一个或另一个范围是没有意义的。

在非常具体、挑剔的情况下,可能有理由扩大规模。

一种是如果您需要一个巨大的动态范围。如果您的数字在[-1,1]中,那么您的最小非零数字将是2-1074,在IEEE 754 64位二进制文件中。但是,它的精度会降低。完全精确的最小数字将是2-1022。这对于任何正常的东西来说都足够了。如果1对应于任何可观察的物理现象(例如,可观察宇宙的质量),那么2-1022低于任何可观察的阈值(它大约是10-223电子质量的倍)。对于物理事物来说,计算这么小的东西是没有意义的——通常只有数学家才感兴趣。如果你正在研究一些特殊的数学应用,那么也许你可以从将你的刻度从[-1,1]更改为更大的刻度中获得一些好处,比如[-21023,21023]。(但是给自己留些空间进行算术而不会溢出。)

另一种情况是相对误差很重要,而浮点精度几乎不足以满足您的需求。表示1.1左右的数字的相对误差大于表示9或1.9左右的数字的相对误差。这是由于数字在浮点中的表示方式,其意义在每个指数范围内都是线性的(而不是对数的)。因此,1.1左右可用的最小增量与1.9左右可用的增量相同,但它们在1.9中的比例小于1.1。这在几乎所有浮点使用中都无关紧要;它往往只在有限的情况下出现,例如数学库,为了确保软件质量,必须对错误进行非常仔细的评估。

小结:不要担心范围。让浮点浮动。

 类似资料:
  • 我正在建立一个使用Hybridauth与谷歌登录的网站。 我只想要一些基本信息,如电子邮件,用户ID和用户名,但我不能设置正确的范围。 google plus outh的东西 当access_type=online时,“此应用程序希望:具有脱机访问”

  • 主要内容:标签属性,JSF验证整数范围实例标签用于验证一个浮点()值的范围。 以下代码显示如何使用标记 标签属性 属性 说明 minimum 在可选范围内最小长度值 maximum 在可选范围内最大长度值 JSF验证整数范围实例 打开 NetBeans IDE 创建一个Web工程:ValidateDoubleValueRange,其目录结构如下所示 - 创建以下文件代码,文件:index.xhtml 的代码内容如下所示 - 文件:resu

  • 问题内容: 我知道他们两个都禁用了Nagle的算法。 我什么时候应该/不应该使用它们中的每一个? 问题答案: 首先,不是所有人都禁用Nagle的算法。 Nagle的算法用于减少有线中更多的小型网络数据包。该算法是:如果数据小于限制(通常是MSS),请等待直到收到先前发送的数据包的ACK,同时累积用户的数据。然后发送累积的数据。 这将对telnet等应用程序有所帮​​助。但是,在发送流数据时,等待A

  • 问题内容: 在该类中,有两个字符串,和。 有什么不同?我什么时候应该使用另一个? 问题答案: 如果你的意思是和则: 用于在文件路径列表中分隔各个文件路径。考虑在上的环境变量。您使用a分隔文件路径,因此在上将是;。 是或用于拆分到特定文件的路径。例如在上,或

  • 问题内容: Java的允许值,并同时允许布尔值,和。我已经开始将s 转换为s。这可能导致测试崩溃,例如 测试时 似乎人为且容易出错。 何时将s与空值一起使用是否有用?如果从不,那么包装对象的主要优点是什么? 更新:有很多有价值的答案,我在自己的答案中总结了其中一些。我充其量只是Java的中级课程,因此我尝试展示了一些我认为有用的东西。请注意,问题是“用词不正确”(布尔值不能“具有空值”),但如果其

  • Java允许和的值,而boolean允许、和。我已经开始将我的s转换为s。这可能会导致测试崩溃,例如 在考试期间 似乎做作且容易出错。 什么时候,如果有的话,使用带有空值的s有用吗?如果没有,那么包裹对象的主要优点是什么? 更新:有很多有价值的答案,我在自己的答案中总结了其中一些。我充其量只是Java的中间人,所以我试图展示我发现有用的东西。请注意,这个问题“措辞不正确”(布尔值不能“有空值”),