如何获取小数点后面的长度并且判断第一位是否为0或者5?

banmiton 2010-08-19 04:12:50
如题,如何获取一个float类型小数点后面的长度,并且判断第一位小数点后的第一位值为0或者5?
...全文
1618 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yilaozhuang 2010-08-19
  • 打赏
  • 举报
回复
学习了,C语言就是这些现成的工具太少,C++,C#就好的多
东大坡居士 2010-08-19
  • 打赏
  • 举报
回复
学会sprintf还是很有用地.......
kostion 2010-08-19
  • 打赏
  • 举报
回复
转换成字符串吧
snprintf(buf, sizeof(buf),"%f", f_value);

char *p = strchr(buf, '.');
int i = 0;
//求小数第一位是0或5
if(*(p+1) == '5' || *(P+1) == '0')
{
printf("小数后第一位是0,或5");
}
//求小数的位数
while(*(p++) != '\0')
{
i++;
}

liao05050075 2010-08-19
  • 打赏
  • 举报
回复
精度上会出现问题。除非你的float数字是用字符串来处理的,否则无法得到它的准确长度
赵4老师 2010-08-19
  • 打赏
  • 举报
回复
float f=1.234f;
char s[20];
char *p;
int L;
sprintf(s,"%g",f);
p=strchr(s,'.');
if (NULL==p) L=0;
else {
L=strlen(s)-(p-s)-1;
switch (p[1]) {
case '0':printf(".0\n");break;
case '5':printf(".5\n");break;
default:printf("not .0 and not .5\n");break;
}
}
xy_zhang 2010-08-19
  • 打赏
  • 举报
回复
你指十进制显示时的小数部分的长度?我觉得float精度有限,这么做可能有误差。

判断第一位小数是0或5,就把该值乘以10,然后转成整数,看最后一位就可以了。

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧