如题,最近在用java写解析器,想知道把string转化为double的strtod怎么工作的。
2条回答 默认 最新
technologist_30 2021-05-20 13:39关注if ( (*p | 32) == 'e' ) //判断*p是e或E { expo = 0; factor = 10.L; switch (*++p) { case '-': //负号乘积因子就从0.1开始 factor = 0.1; case '+': //正号就从10开始 p++; break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': break; default ://非法字符就返回 value = 0.L; p = s; goto done; } while ( (unsigned int)(*p - '0') < 10u )//把指数取出来 expo = 10 * expo + (*p++ - '0'); while ( 1 )//把指数乘到value上 { if ( expo & 1 ) value *= factor; if ( (expo >>= 1) == 0 ) break; factor *= factor; } } done: if ( endptr != 0 ) *endptr = (char*)p; return (sign == '-' ? -value : value); }大致过程
评论 打赏 举报解决 1无用