我不想不必要地重新发明轮子,但我一直在寻找strtod的功能,但使用了一个基本参数(2,8,10,16)。(我知道strtoul允许基本参数,但我正在寻找返回类型double)。有什么正确方向的建议/建议吗?谢谢。
发布于 2011-02-11 05:07:23
对于任意基,这是一个困难的问题,但只要你的基是2的幂,简单的朴素算法就会工作得很好。
strtod (在C99中)支持十六进制浮点数,其格式与C语言的十六进制浮点数常量相同。0x前缀是必需的,p分隔指数,指数以10为底,代表2的幂。如果你需要支持C99之前的库,你就没有这样的运气了。但既然你也需要基数2/4/8,那你最好还是自己动手吧。
编辑:朴素算法的大纲:
double或其他任何变量)开始。如果你想处理潜在的四舍五入的形式,有太多的数字,你必须解决这个逻辑,一旦你超过了第二步或第三步中的有效位的数量。否则,你可以忽略它。
发布于 2011-02-11 05:02:06
不太可能--我从来没有见过浮点数在其他数基中被编码为“十进制”。
https://stackoverflow.com/questions/4962573
复制相似问题