C 将浮点值转换为不带小数分隔符的字符串

C 将浮点值转换为不带小数分隔符的字符串,c,string,floating-point,type-conversion,C,String,Floating Point,Type Conversion,我的浮点值在00.00到99.99之间。我正在尝试将浮点值转换为字符串,同时转换应删除十进制分隔符 flaot a = 00.17; float b = 08.56; 要删除十进制分隔符,我将乘以*100,并使用ftoa()函数转换为字符串 a = a*100; b = b*100; ftoa(a, 0, temp_string); puts(temp_string); ftoa(b, 0, temp_string); output is: 17, 856, 2898 我的输出字符串应

我的浮点值在00.00到99.99之间。我正在尝试将浮点值转换为字符串,同时转换应删除十进制分隔符

flaot a = 00.17;
float b = 08.56;
要删除十进制分隔符,我将乘以*100,并使用
ftoa()
函数转换为字符串

a = a*100;
b = b*100;

ftoa(a, 0, temp_string);
puts(temp_string); 
ftoa(b, 0, temp_string);

output is: 17, 856, 2898
我的输出字符串应该如下所示

output: 0017,0856,2898
我可以在字符串中添加0,条件是数字是否低于99,添加两个0,如果高于99,低于999,添加一个0


有什么最好的方法来完成这项工作吗?

使用printf/sprintf,您可以声明要打印的数字的宽度,因此具有前导0

a = a*100;
b = b*100;
c = c*100;
printf ("a=%04.0f b=%04.0f", a, b);
给出:

a=0017 b=0856
查看更多信息


sprintf将格式化一个字符串,而不是打印到标准输出,这样您就可以按照自己的意愿输出该字符串。

我建议使用添加前导0的printf。请参阅将
float
值始终接近
xx.yy000…
,在这种情况下就足够了。但是,如果您想得到接近“xx.yy5000…”的值的最佳答案,则需要进行额外的工作。阿莱克斯先生指出,这个答案可能表示乘法。e、 g.
printf(“a=%04.0f”,a*100.0)。请注意,
*100
*100.0
相比,接近xx.xx5的值可能会产生差异。我推荐
*100.0
,以确保在这些边缘情况下的正确性;是指整数的前导零。如果我对sprintf使用相同的代码(mystring,“%05s”,tempString);那么它只是增加了空间而不是zeors??不适用于string我正在尝试构建更大的字符串,因此我必须将float转换为string并添加前导零,然后构建string。@verendra-使用sprintf可以轻松地完成此操作。可以作为单独的字符串连接,也可以作为一个长字符串。小心字符串终止符“\0”或进程