1. ホーム
  2. c

[解決済み] C 言語の整数の長さを求める。

2023-07-12 22:34:50

質問

C言語で整数の長さを求める方法を教えてください。

例えば

  • 1 => 1
  • 25 => 2
  • 12512 =>5本
  • 0 => 1

といった具合になります。

C言語でこれを行うにはどうしたらよいでしょうか。

どのように解決するのですか?

C:

数の絶対値の基数10対数をとり、それを切り捨てて、1を足せばよいのではないでしょうか?これは0以外の正負の数に対して機能し、文字列変換関数を使用する必要がありません。

log10 , abs そして floor の関数は math.h . 例えば

int nDigits = floor(log10(abs(the_integer))) + 1;

これを節で囲むと the_integer != 0 というように log10(0)-HUGE_VAL に従って man 3 log .

さらに、入力が負の場合、その負の符号を含む数値の長さに興味があれば、最終結果に1を加えたいかもしれません。

Javaです。

int nDigits = Math.floor(Math.log10(Math.abs(the_integer))) + 1;


N.B. この方法は浮動小数点演算の性質上、より直接的なアプローチよりも遅くなる可能性があります。効率についての議論はKangkanの答えのコメントを参照してください。