-1

ところでJavaを使用しています。しかし、通常、人々はこの種のことを行うようです。

int numDigits = (int)(log10(num)+1); //can explicitly floor, or casting to int will do that

しかし、log10(0) = -INF です。これは、長さが最大の負の整数値に設定されていることを意味します。

条件を作ってもいいと思います

if (numDigits is negative)
    numDigits = 1 //not 0 because I'm counting 0 as 1 digit.

これは、自然数コンストラクターを実装するために使用されているため、人々は私の問題にコンテキストを持っています。

4

2 に答える 2

0

リストしたコードは、-10 の numDigits 値が 1 であることを意味しますが、これは正しくないと思います。

数値を文字列に変換して文字列の長さを取得するのはどうですか?

于 2012-11-07T15:12:46.530 に答える
0

特定の最適化の問題がある場合は、ログ ソリューションに進みます。

int length = (number ==0) ? 1 : (int)Math.log10(number) + 1;

それ以外の場合は、 String.valueOf ソリューションを使用することをお勧めします。これは、将来の開発者/メンテナーにとってはるかに読みやすく、理解しやすいためです。

int length = String.valueOf(number).length();
于 2012-11-07T15:18:29.950 に答える