我想在C中编写一个解析器,它的一部分工作是将一系列字符转换为double。到目前为止,我一直在使用strtod,但我发现它非常危险,它不会处理数字位于缓冲区末尾的情况,该缓冲区不是以null结尾。编写我自己的float解析器
我想我会写我自己的。如果我有一个ab形式的数字的字符串表示,我会不会认为我可以计算(双)a +((double)b /(double)10^n),其中n是数字在B?
例如,23.4563:
一个= 23 B = 4563
最终答案:23 +(10000分之4563)
还是会产生相对于IEEE格式不准确的结果的花车?
其一,如果'B'是一个整数类型,'b/10^N'会被转换为之前得到四舍五入'float'。你想把剧本放在圆括号里面。另外,你需要确保'a'或'b'中没有整数溢出。 – Shahbaz 2013-03-21 17:44:48
对不起,是的,你是对的 - 我的错字。我会编辑它。 – Cthutu 2013-03-21 17:55:50
更多思考:负数,指数格式'1.2E10'。负指数,...我真的*建议你只复制到一个空终止缓冲区,让strtod完成繁重的工作。 – Roddy 2013-03-21 17:58:14