码迷,mamicode.com
首页 > 其他好文 > 详细

C> 求10进制位数

时间:2020-07-06 01:18:03      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:进制   while   main   注意   ++   nbsp   clu   class   turn   

对于10进制数d,求d位数。

例:

d=1000,位数=4 (分别是1,0,0,0)

 

1.将d逐项除10(常规方法)

 

#include <stdio.h>

int
main() { int d = 1000; int counter = 0; while(d) { counter ++; d /= 10; } printf("%d\n", counter); return 0; }

 

2.将d对10求对数

注意到log10(10) = 1, log10(100) = 2, log10(1000) = 3, 实际位数为log10(d) + 1 ;

而当d∈(100,1000)时,2 < log10(d) < 3,对log10(d)取整,求得2,也就是说实际位数为log10(d) + 1对于d不是10^n也成立。

于是,

#include <math.h>
#include <stdio.h>

int
main() { int d = 1000; int counter = (int)log10(d) + 1; printf("%d\n", counter); return 0; }

 

C> 求10进制位数

标签:进制   while   main   注意   ++   nbsp   clu   class   turn   

原文地址:https://www.cnblogs.com/fortunely/p/13252711.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!