代码之家  ›  专栏  ›  技术社区  ›  Kerido

如何在不使用crt的情况下将double转换为string

  •  1
  • Kerido  · 技术社区  · 15 年前

    我的问题没有实际应用价值。我只是感兴趣。假设,我有一个双精度值,我想获得它的字符串表示形式,类似于 printf 功能。如果没有C运行库,我该怎么做?假设我使用的是x86架构。

    3 回复  |  直到 14 年前
        1
  •  2
  •   nall    15 年前

    既然你说你的问题没有实际应用,我想你是想学习浮点数表示法。

    因此,如果你不使用 任何 库支持,从 format specification . 从中可以识别各种“特殊”值(无穷大、NaN等)以及解码/计算实际数值。一旦你有了有效位和指数,你就知道把小数点放在哪里了。你得自己写 itoa 键入例程。对于二次幂的半径,这可以像查找表一样简单。对于十进制,你需要做一些额外的计算。

        2
  •  0
  •   fazo    15 年前

    您可以将左侧的所有值乘以(双%10),然后每次除以10。 他们将从右到左。

    若要获取点右侧的值,必须乘以10,然后(加倍%10)。他们将从左到右。

        3
  •  0
  •   Rick Regan    14 年前

    如果你只想得到一个“足够接近”的结果,请看我的文章 http://www.exploringbinary.com/quick-and-dirty-floating-point-to-decimal-conversion/ . 它描述了一个使用浮点将浮点转换为十进制的简单程序,并解释了为什么这种方法永远不可能对所有转换都准确。(程序不像printf那样进行小数舍入,但这应该很容易添加。)