用于将浮点格式化为十进制数的算法

时间:2013-07-11 08:04:16

标签: c floating-point formatting decimal printf

最近,我研究了IEEE 754-1985标准。在网上阅读了一些材料之后,我想我已经掌握了浮点数的基本思想。虽然,我有一个问题,通过搜索网络无法解决。也就是说,计算机系统如何将浮点数(以二进制形式)转换为十进制等值并将其作为字符串打印在屏幕上以供我们阅读?

要清楚,例如,在C / C ++语言中,我们只写:

...
float x,y,z;
x=3.14;
y=2.71;
z=x+y;
printf("%f",z);

我们将在屏幕上获得5.85。但计算机(或只是C语言及其编译器)如何将x,y转换为IEEE二进制浮点形式,并在CPU计算后,将IEEE表格转换回十进制字符串形式?

是否有一些算法和转换?顺便说一句,是硬件还是软件才能做到这一点?

谢谢! : - )

1 个答案:

答案 0 :(得分:0)

您应该查看glibc,尤其是printf函数。这是至少一个流行实现的权威答案所在。我怀疑它太可读了。

绝对是用软件完成的。

http://www.gnu.org/software/libc/download.html