如题,最近在用java写解析器,想知道把string转化为double的strtod怎么工作的。
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);
}
大致过程
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632