Re: [問題] 整數的位數

看板C_and_CPP作者 (微笑的貓)時間14年前 (2010/11/01 18:12), 編輯推噓5(507)
留言12則, 5人參與, 最新討論串1/1
剛想到一個方法可以計算輸入十進位整數的位數, 雖然很簡單也不知道有沒有OP, 有錯請指正。 /* number是輸入的十進位整數,digit是該整數的位數 */ while(number!=0){ if(number>0) number/=10; if(number<0) number/=-10; ++digit; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.68.28

11/02 03:19, , 1F
num*=(num<0?-1:1); dig=0; while(num>0){num/=10;++dig;}
11/02 03:19, 1F

11/02 07:13, , 2F
char buf[20]; int dig = sprintf(buf, "%d", num);
11/02 07:13, 2F

11/02 07:24, , 3F
http://ppt.cc/XAa1 看一下 Exanple 就知道了:)
11/02 07:24, 3F

11/02 11:17, , 4F
請問樓上,如果是負數的話呢?
11/02 11:17, 4F

11/02 11:33, , 5F
感覺沒必要在裡面判斷正負吧?? 要的話在進while前判斷一
11/02 11:33, 5F

11/02 11:34, , 6F
次, 然後直接取正來算就好了, 更合況其實除以10除到最後
11/02 11:34, 6F

11/02 11:34, , 7F
number變成0, loop停了也就有結果了....@_@"
11/02 11:34, 7F

11/02 11:35, , 8F
竟然string法也出現了XD
11/02 11:35, 8F

11/02 11:36, , 9F
噢,我是指用sprintf的話啦...不過也是事前判斷正負就好了XD
11/02 11:36, 9F

11/02 22:40, , 10F
忽然想到, 龜毛一點的話, input 0 的時候要特別處理XD
11/02 22:40, 10F

11/03 07:17, , 11F
0 的位數是零位呦XD
11/03 07:17, 11F

11/03 17:27, , 12F
floor(log10(abs(number)))+1
11/03 17:27, 12F
文章代碼(AID): #1CpmB-gc (C_and_CPP)