格式化单精度IEEE 754浮点数

时间:2010-10-02 07:52:43

标签: formatting floating-point

我需要以不会丢失任何信息的方式将单精度数字表示为文本(因此我可以返回相同的数字,可能忽略NaN等),但没有太多的虚假数字 - 所以单精度为0.1出现为“0.1”而不是“0.100000001490116”。

我不是想节省字节,这些额外的数字只是令人困惑。

有一种简单的方法吗?我可以看到至少需要8个有效十进制数来表示23 + 1位(12345678.0和12345679.0在单精度上有所不同),并且用二进制指数(12345b-11表示法就足够了)但是这保证是足够的十进制指数表示法(1.2345e+6)或使用0填充(0.0000123456 - 通常更具可读性,并且这些零点不会让我感到烦恼)?

任何printf格式或完全赞赏的确切说明。

1 个答案:

答案 0 :(得分:3)

正确行事是一项非常重要的任务:问题是多篇学术论文的主题。

许多开源项目都使用David M. Gay的dtoa.c库。如果你使用Python,最近发布了基于dtoa.c的舍入(2.7 / 3),关于相关任务讨论的讨论非常值得:

如果你想了解更多(很多):