本文目录一览:
如何用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 #表示空格