回 帖 发 新 帖 刷新版面

主题:一个菜鸟问题,判断一个数的位数

哪位大侠叫一下如何判断一个数的位数。

回复列表 (共12个回复)

沙发

以下方法只适用于正整数:

如果x^a=y,那么a=log(y)=ln(y)/ln(10)
当x=10的时候显然a的值就能表示y的位数。
所以trunc(ln(y)/ln(10))+1即为所求。

板凳

var
  n:integer;
  a:string;
begin
  read(n);
  str(n,a);
  write(length(a));
end.

3 楼

用字符串函数length

4 楼

同意二楼~~

5 楼

var st:ansistring;
begin
  readln(st);
  writeln(length(st));
end.

6 楼

trunc(log10(x))+1
其中log10(x)在PASCAL里面是ln(x)/ln(10)

7 楼

trunc(ln(x)/ln(10))+1

8 楼

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 楼

先用str转化成字符串,再用length测长度

10 楼

还有一种办法
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.

我来回复

您尚未登录,请登录后再回复。点此登录或注册