我在没有printf()
或任何等价物的环境中,所以我自己写。但我不知道如何执行这种float
类型的转换。我试图看看 gcc 是如何做到的,但这真的很难理解。
问问题
1894 次
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 回答