今天老师提到一个将float型数据转换为字符串的问题,首先想到了sprintf函数,就试了一下,发现了一些问题。
功能:把格式化的数据写入某个字符串缓冲区。
头文件:stdio.h
原型:int sprintf( char *buffer, const char *format, [ argument] … );
参数列表:
buffer:
char型指针,指向将要写入的字符串的缓冲区。
format:格式化字符串。
[argument]..
.:可选参数,可以是任何类型的数据。
返回值:字符串长度(
strlen)
关于sprintf对于float类型的转换,有几种输出格式:
浮点数的打印和格式控制是sprintf 的又一大常用功能,浮点数使用格式符”%f”控制,默认保留小数点后6 位数字,比如:
sprintf(s, "%f", 3.1415926); //产生"3.141593"。同时还可以控制整数部分和小数部分的显示位数,使用”%m.nf”格式,其中m 表示打印的宽度,n 表示小数点后的位数。(一定要注意m与n之间的点“.”)。当打印宽度比参数的宽度大时,在整数的左边补空格;当小数部分保留的位数比参数小数部分大时,小数部分右边补0。
sprintf(s, "%2.4f", 34567.141);
输出为:34567.1410;此时,总宽度在此处不起作用。
注意,m为总的数位数(包括小数点),n为小数位数。
sprintf(s, "%11.4f", 34567.141);
输出为:空格34567.1410;
#include <iostream>
using namespace std;
int main()
{
char s[50];
sprintf(s, "%11.4f", 34567.141);
printf(s);
system("pause");
}