我正在尝试用 C 编写一个解析器,它的部分工作是将一系列字符转换为双精度。到目前为止,我一直在使用 strtod,但我发现它非常危险,它不会处理数字位于缓冲区末尾的情况,它不是以空值终止的。
我以为我会自己写。如果我有一个 ab 形式的数字的字符串表示,我会不会认为我可以计算 (double)a + ((double)b / (double)10^n),其中 n 是b中的数字?
例如,23.4563:
a = 23 b = 4563
最终答案:23 + (4563/10000)
或者这会对 IEEE 格式的浮点数产生不准确的结果?