gpt4 book ai didi

c - 带有基本参数的 strtod

转载 作者:太空宇宙 更新时间:2023-11-04 03:06:06 27 4
gpt4 key购买 nike

我不想不必要地重新发明轮子,但我一直在寻找 strtod 的功能,但有一个基本参数 (2,8,10,16)。 (我知道 strtoul 允许一个基本参数,但我正在寻找返回类型 double)。任何正确方向的建议/指示?谢谢。

最佳答案

对于任意基数,这是一个难题,但只要你的基数是 2 的幂,简单的朴素算法就可以正常工作。

strtod(在 C99 中)以与 C 语言的十六进制浮点常量相同的格式支持十六进制 float 。需要0x前缀,p分隔指数,指数以10为底,表示2的幂。如果需要支持C99之前的库,你'不会有这样的运气。但由于您也需要 base 2/4/8,所以最好还是自己动手。

编辑:朴素算法的概述:

  1. 从一个初始化为 0 的浮点累加器变量(double 或任何您喜欢的)开始。
  2. 从最左边的数字开始,直到小数点,对于您处理的每个字符,将累加器乘以底数,然后将字符的值作为数字相加。
  3. 在小数点之后,开始一个新的运行位值变量,最初是 1/base。在您处理的每个字符上,将数字值乘以位值变量,然后将位值变量除以基数。
  4. 如果您看到指数字符,请将其后的数字读取为整数,并使用标准库函数之一按 2 的幂缩放 float 。

如果您想要处理可能有太多数字的舍入形式,您必须在第 2 步或第 3 步中超过有效位的数量时制定该逻辑。否则您可以忽略它。

关于c - 带有基本参数的 strtod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4962573/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com