gpt4 book ai didi

c++ - 如何将字符串(包含双最大值)转换为 double

转载 作者:太空狗 更新时间:2023-10-29 23:38:13 27 4
gpt4 key购买 nike

我在转换“普通” double 值时没有问题,但我无法转换 numeric_limits<double>::max( ) 或 DBL_MAX字符串表示?

std::string max = "1.79769313486232e+308";

std::istringstream stream(max);
double value;

// enters here, failbit is set
if (!(stream >> value))

最佳答案

会不会是 DBL_MAX 的实际值不能用小数点后 16 位的指数表示法精确表示(假设小数值非常小大于基于两个表示),但是使用 DBL_MAX 初始化 double 仍然会设置正确的值(由于四舍五入)。 std::istringstream 可能有点挑剔。

编辑: 实际上,我发现我的编译器中 DBL_MAX 的值为 1.7976931348623158e+308,这对我来说很好用。您的数字四舍五入且稍大,因此失败。

EDIT2: DBL_MAX 的十进制形式的精确值由 (2 ^ (1023 - 52)) * (2 ^ 53 - 1) 给出 不能用小数点后 16 位表示。

关于c++ - 如何将字符串(包含双最大值)转换为 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1939284/

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