主题:一个菜鸟问题,判断一个数的位数
dong1994
[专家分:0] 发布于 2009-07-20 22:07:00
哪位大侠叫一下如何判断一个数的位数。
回复列表 (共12个回复)
沙发
小田甜 [专家分:3910] 发布于 2009-07-21 19:53:00
以下方法只适用于正整数:
如果x^a=y,那么a=log(y)=ln(y)/ln(10)
当x=10的时候显然a的值就能表示y的位数。
所以trunc(ln(y)/ln(10))+1即为所求。
板凳
tzhlryy [专家分:270] 发布于 2009-08-01 18:19:00
var
n:integer;
a:string;
begin
read(n);
str(n,a);
write(length(a));
end.
3 楼
abcwuhang [专家分:1840] 发布于 2009-08-20 17:02:00
用字符串函数length
4 楼
huxuming [专家分:20] 发布于 2009-08-24 12:01:00
同意二楼~~
5 楼
abcwuhang [专家分:1840] 发布于 2009-08-25 09:33:00
var st:ansistring;
begin
readln(st);
writeln(length(st));
end.
6 楼
1042144576 [专家分:10] 发布于 2009-08-26 17:25:00
trunc(log10(x))+1
其中log10(x)在PASCAL里面是ln(x)/ln(10)
7 楼
0000000000000 [专家分:0] 发布于 2011-07-15 10:13:00
trunc(ln(x)/ln(10))+1
8 楼
Hack_RDZ [专家分:0] 发布于 2011-07-29 19:29:00
var
shu,weishu:integer;
i:longint;
begin
readln(shu);
i:=1;
while (i<=shu) do begin
inc(weishu);
i:=i*10;
end;
writeln(weishu);
end.
9 楼
wzcwzcwzc4 [专家分:0] 发布于 2011-08-03 16:24:00
先用str转化成字符串,再用length测长度
10 楼
yutianxiang [专家分:50] 发布于 2012-04-19 17:25:00
还有一种办法
var
i,m,n:integer;
begin
i:=1;
readln(m);
n:=m;
while n div 10>0 do
begin
i:=i+1;
m:=m div 10;
end;
readln
end.
我来回复