gpt4 book ai didi

java - 排序操作以最大化 double

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:17:49 26 4
gpt4 key购买 nike

我正在开发一些工具,用于计算在最坏情况下接近 1e-25 的数字,并将它们放在 Java 中进行比较。我显然使用的是 double 。

我在 another answer 中读到我不应该期望超过 1e-151e-17 的精度,并且 this other question 处理在订购操作时获得更好的精度一个“更好”的命令。

哪些 double 操作更愿意在过程中降低精度?我应该尝试使用尽可能大还是尽可能小的数字?先除法再乘法?

我宁愿不使用 BigDecimal 类或等效类,因为代码已经够慢了;)(当然,除非它们不会对速度产生太大影响)。

任何信息将不胜感激!

编辑:数字在绝对值 (1e-25) 上“小”这一事实并不重要,因为 double 可以下降到 1e-324。但重要的是,当它们非常相似时(都在 1e-25 中),我必须比较,比方说 4.64563824048517606458e-21 到 4.64563824048517606472e-21(差异是第 19 位和第 20 位)。当计算这些数字时,差异是如此之小以至于我可能会遇到“舍入错误”,其中余数用随机数填充。

问题是:“如何对计算进行排序以使这种精度损失最小化?”。它可能先除法再乘法,或先加法。

最佳答案

如果获得正确答案很重要,您应该使用 BigDecimal。它比 double 慢,但在大多数情况下它足够快。我想不出很多情况,你用如此小的数字进行大量计算,而答案是否正确并不重要 - 至少在 Java 中是这样。

如果这是一个 super 性能敏感的应用程序,我会考虑使用不同的语言。

关于java - 排序操作以最大化 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17120806/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com