GHC 7.0.3 否认将 2^1000 显示为标准化双精度输出“无穷大”

发布于 2024-12-11 05:14:10 字数 343 浏览 0 评论 0原文

我有以下输出 - 我很惊讶。有什么帮助为什么“我的双打”看起来这么低吗?

<块引用>

Prelude GHC.Float> floatRange (0.5e1000::Double)

(-1021,1024)

Prelude GHC.Float>显示(0.5e1000::双)

“无限”

指数 1000 似乎离 1024 限制相当远(因为我预计 IEEE 会包含这个 ::Double)。

我将不胜感激你的帮助。

I have the following output - and I am surprised. Any help why "my Doubles" seem to be so low?

Prelude GHC.Float> floatRange (0.5e1000::Double)

(-1021,1024)

Prelude GHC.Float> show (0.5e1000::Double)

"Infinity"

The exponent 1000 seems to be quite far away from the 1024 limit (as I expected IEEE to contain this ::Double).

I would appreciate your help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

满意归宿 2024-12-18 05:14:10

最有可能的是,floatRange 返回二进制(以 2 为底)指数的范围。您在这里设置以 10 为底的指数为 1024,因此您要求以 2 为底的指数达到 3402 左右。

Most likely, floatRange is returning the range of the binary (base-2) exponent. You are setting a base-10 exponent of 1024 here, so you're asking the base-2 exponent to reach 3402 or so.

如梦亦如幻 2024-12-18 05:14:10

0.5e1000 并不意味着“2^1000”。它的意思是“0.5 * 10^1000”,这实际上远远超出了可表示的双精度值的范围。

0.5e1000 does not mean "2^1000". It means "0.5 * 10^1000", which actually is well outside the range of representable double-precision values.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文