gpt4 book ai didi

c++ - strtod 和下溢

转载 作者:太空宇宙 更新时间:2023-11-04 00:55:34 31 4
gpt4 key购买 nike

在 C++ (Visual C++ 2010) 中使用 strtod 函数将字符串转换为 double 时,我想检测下溢。尽管我根据 strtod 的文档做了以下代码,但它并没有像我预期的那样工作:

 char numStr[] = "123456.122111111123123123123132123123123123123124434345345";
char* pEnd;
double d = strtod(numStr, &pEnd);
int errorNum = errno;
if (errorNum == ERANGE) // this should be true
{
// underflow occurred
}

使用调试器,我发现 errorNum 总是设置为 0ERANGE34

我错过了什么?

最佳答案

该值不会下溢。它(远)大于最小的正常正双倍数。甚至最后一个地方 (5*10^-51) 也是。最小的普通 64 位 IEEE double 是 2^−1022。

关于c++ - strtod 和下溢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4073428/

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