0

我在没有printf()或任何等价物的环境中,所以我自己写。但我不知道如何执行这种float类型的转换。我试图看看 gcc 是如何做到的,但这真的很难理解。

4

2 回答 2

4

浮点格式很容易出错。编写一个适用于“大多数”数字的简单实现看似容易,但它可能会在非常大的数字、非常小的数字和接近零的数字上崩溃,更不用说 IEEE754 次正规、无穷大和 NaN。它也可能会弄错尾随小数,无法提供允许逐位再现浮点数的字符串表示。

幸运的是,有一些库可以实现格式化浮点数的工作,用于教育、嵌入式系统或改进标准库格式化的某些方面。如果可能,我建议您合并David Gay 的dtoa,该库已经在 Python 和其他地方进行了广泛的测试。

于 2013-10-12T18:40:19.710 回答
2

你可以看看musl libc implementation。musl是一个轻量级的 libc。

fmt_fp中定义的函数中src/stdio/vfprintf.c,它们基本上是将浮点数转换为字符串以用于fprintf转换说明符,例如f.

如果您使用关键字在互联网上搜索ftoa,您会发现其他一些将 a 转换float为字符串的函数实现。

于 2013-10-12T18:10:44.550 回答