社区
数据结构与算法
帖子详情
怎么样知道一个数是几位数
troubleboy
2005-08-23 08:11:46
在程序中经过某些运算,得到一个数,但是不知道这个数是几位的,用什么办法能算出这个数的位数。谢谢。
...全文
903
15
打赏
收藏
怎么样知道一个数是几位数
在程序中经过某些运算,得到一个数,但是不知道这个数是几位的,用什么办法能算出这个数的位数。谢谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fxw
2005-09-26
打赏
举报
回复
(x+'').length
andy_linky
2005-09-26
打赏
举报
回复
对数
yangyzqo
2005-09-23
打赏
举报
回复
学习
xdop
2005-09-20
打赏
举报
回复
最快是比较法,但是有限
大数用对数
liangbch
2005-09-20
打赏
举报
回复
楼上的方法大概是速度最慢的方法之一,你看一看sprinf,strlen的源代码,就知道了。
gnefuil
2005-09-19
打赏
举报
回复
sprintf(str,"%d",a);
printf("%d",strlen(str));
fishbob21
2005-09-19
打赏
举报
回复
public class DigitalSize {
public int size(int d) {
int[] sizeTable = {9, 99, 999, 9999, 99999, 999999,
9999999, 99999999, 999999999, Integer.MAX_VALUE};
if (d < 0) {
d = -d;
}
for (int i = 0; ; i++) {
if (d <= sizeTable[i]) {
return i + 1;
}
}
}
public static void main(String[] args) {
DigitalSize digitalsize = new DigitalSize();
System.out.println(digitalsize.size( -123456));
}
}
主要算法参考的Integer类中的stringSize方法
liangbch
2005-09-01
打赏
举报
回复
你们怎么不看我的回复吧,对整数而言,使用优化的二分比较法的速度仍不如我下面给出的汇编代码。
_asm
{
mov eax, n
or eax,eax
jz $exit
bsr eax, eax
inc eax
$exit:
}
无心人
2005-09-01
打赏
举报
回复
一个对数要消耗上百个CPU时钟
还不如二分的判断来的快
估计8位数用不到对数
无心人
2005-09-01
打赏
举报
回复
如果数字比较大
对数法最优
小到一定程度则,用比较法
< 10 1
< 100 2
< 1000 3
类推
xiaocai0001
2005-08-24
打赏
举报
回复
int(log10(1000)) + 1,结果是3,可1000应该是4位数了
------------------------
log10(1000) = 3.0
int(log10(1000)) + 1 = 4
我没算错吧?
troubleboy
2005-08-24
打赏
举报
回复
xiaocai0001(萧筱雨): int(log10(1000)) + 1,结果是3,可1000应该是4位数了
NowCan
2005-08-24
打赏
举报
回复
还要考虑负数的情况。
liangbch
2005-08-23
打赏
举报
回复
如果求是几位10进制数,只能用下面的方法:
if (n=0)
return 0;
if ( n >=1 && n<10)
return 1;
else if (n>=10 && n<100)
return 2;
else if (n>=100 && n<1000)
... //以此类推
如果求是几位2进制数,有使用汇编指令的快速方法,下面是VC中嵌入汇编的示例程序:
int GetBitCount(unsigned long n)
{
_asm
{
mov eax, n
or eax,eax
jz $exit
bsr eax, eax
inc eax
$exit:
}
}
// 说明:定义0是0位数
int main(int argc, char* argv[])
{
unsigned long i;
for (i=0;i<=256;i++)
{
printf("%d is %d dig num\n",i,GetBitCount(i));
}
return 0;
}
xiaocai0001
2005-08-23
打赏
举报
回复
你这个数是不是整数啊?
整形?长整形?
如果是整数
可以用循环除10来确定位数
如果只是想知道整数部分的位数,可以用log10()这个函数
对任意整数N(N>0)log10(N)取整+1就是这个N的位数了
C语言中输入
一个
数,怎么判断它是
几位数
?
该博客给出一段C语言代码,用于统计输入数的位数。思路是让输入的数依次递减一位,通过循环和除法操作计算位数,还单独处理了输入为0的情况。
《C语言》判断
一个
数是
几位数
博客介绍了使用Dev C++编写C语言代码的流程,包括打开Dev C++、编写代码,最后展示运行结果,为C语言初学者提供了基础操作指引。
求正整数n是
几位数
c++_【每日编程318期】N自守数
该编程任务旨在判断
一个
正整数N是否为N-自守数,即K的平方乘以N后结果的末尾几位等于K。问题提供了输入输出格式和样例,并要求用C++编写程序。另
一个
任务是寻找销量最高的月饼,输入包含月饼销量数据,输出销量最大值及对应的月饼编号。
「题目讲解」C语言 使用函数判断水仙花数 求范围内的所有水仙花数
本文介绍了一种使用C语言判断水仙花数的方法,包括编写narcissistic函数检查数字是否为水仙花数以及PrintN函数打印指定范围内的水仙花数。通过优化代码,减少了循环和判断,提高了效率。最后展示了优化后的代码及其运行结果。
C语言—判断
一个
数有
几位数
,过程非常仔细
本文介绍了一种使用C语言判断整数位数的方法。通过不断除以10并计数,最终确定数字的位数。文章提供了完整的代码示例及运行结果。
数据结构与算法
33,026
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章