【发布时间】:2013-02-04 06:36:44
【问题描述】:
我正在编写一个函数,它将以 void 指针的形式传递一个浮点数。我正在尝试做的是将该浮点数转换为等效的字符串,以便我可以将该二进制数据保存在内存中。比如我的函数调用如下:
void * f(void * data);
如果用户经过我
float value = 3.14;
我想把它转换成如下所示的字符串:
"3.14"
我认为我应该使用的方法是首先确定浮点数中的值的数量:3.14 = 四个值。然后我必须遍历每个值并将其转换为字符。
我遇到的几个问题是 1:我不确定是否甚至可以确定与给定浮点数关联的值的数量。 2:如何将每个值转换为等效的字符串?
我遇到了 itoa 和 sprintf。但是,itoa 不是标准 C 库的一部分,我不确定 sprintf 是否会如我所愿。
【问题讨论】:
-
sprintf(str, "%4.2f", float)
-
你可能想要
sprintf。您(通常)无法计算出多个数字 - 传递为(例如)1.2的东西最终会以1.99999999999999的顺序结束(达到类型的精度 - 但二进制浮点数不能精确表示0.2。
标签: c floating-point char systems-programming