您的位置:

c语言sprintf取后几位,c语言sprintf_s

本文目录一览:

如何用c语言计算小数点后位数

这个要看小数按什么格式输入。

如果按%s输入,也就是按字符串格式输入,先找到小数点的位置,然后统计下小数点后数字的长度。

具体实现可参考:

#include stdio.h

#include stdlib.h

#include string.h

int main(int argc, char* argv[])

{

char a[128];

while(scanf("%s",a)!=EOF)

{

if(strstr(a,".")!=NULL)

printf("%d\n",strlen(strstr(a,".")+1));

else

printf("0\n");

}

system("pause");

return 0;

}

如果按%f(对应float类型小数)或者%lf(double类型的小数)方式读入,则需要先去掉整数部分,然后看小数部分一直乘10减去整数部分,知道等于0,统计,乘了几次10,但是由于浮点数在计算机中存的并不是准确值,这个往往得不到正确的结果。可以使用sprintf(str,"%g",f);,然后由于f毕竟不是准确值,还是会出现有些问题,源码如下:

#include stdio.h

#include stdlib.h

#include string.h

int main(int argc, char* argv[])

{

char a[128];

float f;

while(scanf("%f",f)!=EOF)

{

sprintf(a,"%g",f);

if(strstr(a,".")!=NULL)

printf("%d\n",strlen(strstr(a,".")+1));

else

printf("0\n");

}

system("pause");

return 0;

}

这是最后一个已经出现错误,所以遇到要精确判断小数点的位数,最好直接按字符串读入,这和图灵机的工作原理暗暗相合。

在C语言中,怎样取小数只取2两位 然后赋值给字符串?

方法:

定义字符数组用来存储字符串

定义浮点数赋值,如:double d=1.23456;

用sprintf()的%.2f格式截取浮点数的小数位,第三位四舍五入

输出结果验证

参考代码:

附:sprintf()函数格式说明(与printf格式相同):

%m.nf        m是输出输出数据最小字符宽度(可省,按实际长度输出),n为小数点后保留位数(0表示不输出小数位和小数点),第n+1位四舍五入,f表示按浮点数输出。

C语言sprintf问题

sprintf指的是字符串格式化命令,主要功能是把格式化的数据写入某个字符串中。

然后看%.3e就是表示以指数形式输出浮点数,其中.3表示输出三位小数

所以这句话的意思就是把tem2的值以指数形式转换成字符串,并保存到dg中,并且字符串中有三位小数。

C语言 怎么取小数的最后一位

int Function(float num)

{

int len;

char str[20];

num=num-(int)num;//求小数部分

sprintf(str,"%f",num);//将小数转换为字符串

len=strlen(str);

while(str[len-1]=='0')len--;//找到尾部第一个非零字符

str[len]='\0';

return str[len-1]-'0';//'9'-'0'=9

}

c语言中的sprintf函数?

%6.2f的格式含义是,数字整体长度包括小数点为6位,保留两位小数。但当实际长度大于格式定义的位数时以实际为准,因此输出是12345678.12

第二个当格式定义的位数大于实际长度时,补空格

输出就是:##1.20 #表示空格