none
关于C语言标准库中的函数strtod RRS feed

  • 问题

  • 在使用函数strtod的过程中,如下所述:
    1)在VS2010中:
    char *pTest = "2.225e-308";
    char *endptr = NULL;
    double dValue = strtod(pTest, &endptr);
    结果是:dValue = 2.225000000000e-308#DEN,
    而错误标识errno != ERANGE,则是为0;
    2)在VC6.0中:
    结果是:dValue = 0.00000000000000000;
    错误标识errno == ERANGE.

    怎么上述两种结果为什么不一样?后缀名#DEN是什么意思?如果在vs2010下发生溢出怎么捕获?
    2011年12月30日 3:08

全部回复

  • 说明在VC6中不能显示这么小的值。后缀#DEN是Denormal number。说明该数字只能以ieee方式表示。


    麻烦把正确答案设为解答。
    • 已建议为答案 shawken 2011年12月30日 9:48
    2011年12月30日 6:54
    版主
  • 说明在VC6中不能显示这么小的值。后缀#DEN是Denormal number。说明该数字只能以ieee方式表示。


    麻烦把正确答案设为解答。

    那么如果出现#DEN的值,算是溢出吗?如果是溢出怎么捕获到这种异常情况?如果不是溢出,那这种值怎么进行解释,能参与正常的运算吗?谢谢!
    2011年12月30日 8:38