社区
数据结构与算法
帖子详情
怎么样知道一个数是几位数
troubleboy
2005-08-23 08:11:46
在程序中经过某些运算,得到一个数,但是不知道这个数是几位的,用什么办法能算出这个数的位数。谢谢。
...全文
779
15
打赏
收藏
怎么样知道一个数是几位数
在程序中经过某些运算,得到一个数,但是不知道这个数是几位的,用什么办法能算出这个数的位数。谢谢。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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的位数了
位数(digit),计算
一个
整
数是
几位数
(C++)
计算
一个
整
数是
几位数
(C++) 文章目录计算
一个
整
数是
几位数
(C++)前言题目:解题思路:代码:运行结果总结 前言 刘汝佳算法《算法竞赛入门经典》第二章2.4.6上机练习第一题 题目: 输入
一个
不超过10的九次方的...
判断数字是
几位数
3.在main方法中打印该数字是
几位数
4.演示格式如下: (1)演示一: 请输入
一个
整数:1234 控制台输出:1234是4位数字 (2)演示二: 请输入
一个
整数:-34567 控制台输出:-34567是5位数字 package com.it; import java.util....
C语言判断
一个
数是
几位数
判断
一个
数是
几位数
#include"stdio.h" int main() { int num = 0; int count = 0; scanf("%d", &num); //用for循环 /*for (; num != 0;) { num = num / 10; count++; }*/ //用while循环 while ...
C语言—判断
一个
数有
几位数
,过程非常仔细
C语言—判断
一个
数有
几位数
,过程非常仔细
求
一个
数是
几位数
的几种方法
第一种:数字分割法 代码如下: #include <stdio.h> void main() { int x,b=0; scanf("%d",&x); while(x>0) { x=x/10; b++; } printf("%d ",b); } 第二种:log10法 C语言中只有lo...
数据结构与算法
33,027
社区成员
35,335
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章