gpt4 book ai didi

c++ - 实际长 double 与 std::numeric_limits 不一致

转载 作者:行者123 更新时间:2023-11-30 01:31:52 26 4
gpt4 key购买 nike

在 Mac OS X 10.6.2、英特尔、i686-apple-darwin10-g++-4.2.1 上工作,并使用 -arch x86_64 标志进行编译,我只是注意到...

std::numeric_limits<long double>::max_exponent10 = 4932

...正如预期的那样,当一个 long double 实际上被设置为一个指数大于 308 的值时,它变成了 inf——即实际上它只有 64 位精度而不是 80 位。

此外,sizeof()显示 long double 为 16 字节,这是应该的。

最后,使用 <limits.h>给出与 <limits> 相同的结果.

有谁知道差异可能在哪里?

long double x = 1e308, y = 1e309;  
cout << std::numeric_limits<long double>::max_exponent10 << endl;
cout << x << '\t' << y << endl;
cout << sizeof(x) << endl;

给予

4932
1e+308 inf
16

最佳答案

这是因为 1e309 是一个给出 double 的文字。您需要使用长 double 文字 1e309L

关于c++ - 实际长 double 与 std::numeric_limits 不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2565512/

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