
在C语言中如何输出数字的位数
6个回答
展开全部
考虑int 或double的情况,不调用库函数直接计算的代码.
#include <stdio.h>
int FunInt(int iTemp);
int FunDouble(double iTemp);
int main()
{
int i = 999;
int k = FunInt(i);
printf("%d\r\n", k);
double di = 999.999;
k = FunDouble(di);
printf("%d\r\n", k);
return 0;
}
//整数的情况
int FunInt(int iTemp)
{
int iLocal = 1;
if (iTemp < 0)
{
iTemp -= (iTemp + iTemp);
}
while ((iTemp = iTemp / 10) != 0)
{
iLocal++;
}
return iLocal;
}
//浮点数的情况
int FunDouble(double iTemp)
{
int iLocal = 1;
if (iTemp < 0)
{
iTemp -= (iTemp + iTemp);
}
//计算整数部分的位数
int iIntPart = iTemp;
iLocal = FunInt(iIntPart);
//计算小数部分的位数
double bPart = iTemp - iIntPart;
//由于是浮点数的判断,必须要有个精度,不能直接判断两者相等
while (((bPart - (int)bPart)) > 0.000000002)
{
bPart *= 10;
iLocal++;
}
return iLocal;
}
#include <stdio.h>
int FunInt(int iTemp);
int FunDouble(double iTemp);
int main()
{
int i = 999;
int k = FunInt(i);
printf("%d\r\n", k);
double di = 999.999;
k = FunDouble(di);
printf("%d\r\n", k);
return 0;
}
//整数的情况
int FunInt(int iTemp)
{
int iLocal = 1;
if (iTemp < 0)
{
iTemp -= (iTemp + iTemp);
}
while ((iTemp = iTemp / 10) != 0)
{
iLocal++;
}
return iLocal;
}
//浮点数的情况
int FunDouble(double iTemp)
{
int iLocal = 1;
if (iTemp < 0)
{
iTemp -= (iTemp + iTemp);
}
//计算整数部分的位数
int iIntPart = iTemp;
iLocal = FunInt(iIntPart);
//计算小数部分的位数
double bPart = iTemp - iIntPart;
//由于是浮点数的判断,必须要有个精度,不能直接判断两者相等
while (((bPart - (int)bPart)) > 0.000000002)
{
bPart *= 10;
iLocal++;
}
return iLocal;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |