长双精度精度不起作用或 devcpp 失败

发布于 2024-12-13 22:31:14 字数 192 浏览 0 评论 0原文

我用过这个:

  long double f =79228162514264337593543950336.0;//maximum ; 2 ^ 96 because f is 12 bytes
  cout.precision(30);
  cout<<f;

但是有些数字出错了。为什么 ?

I have used this :

  long double f =79228162514264337593543950336.0;//maximum ; 2 ^ 96 because f is 12 bytes
  cout.precision(30);
  cout<<f;

But some numbers turns wrong . why ?

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

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

发布评论

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

评论(2

黎歌 2024-12-20 22:31:14

您的实现提供了多大的 long double (或者,等效地,它为 LDBL_DIGITS 显示什么值)?它通常是 80 位类型,具有约 20 位有效(十进制)数字。请特别注意,浮点类型将分为尾数(有效数字)和指数,因此如果它总共有 12 个字节,则它将没有有 12 位有效数字,因此您可以不希望看到 12 字节的精度。

What size of long double does your implementation provide (or, equivalently, what value does it show for LDBL_DIGITS)? It's often an 80-bit type with ~20 significant (decimal) digits. Note, in particular, that a floating point type will be divided between a mantissa (significand) and an exponent, so if it's 12 bytes overall, it will not have a 12-bit significand, so you can't expect to see 12 bytes worth of precision.

我乃一代侩神 2024-12-20 22:31:14

long double 文字的正确后缀是 L

long double f =79228162514264337593543950336.0L;

The correct suffix for long double literals is L:

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