Java 不使用字符串API的数字中的位数

Java 不使用字符串API的数字中的位数,java,string,math,integer,number-formatting,Java,String,Math,Integer,Number Formatting,我有一个要求,我需要找到整数中的位数。 我搜索了一下,找到了一些窍门。但我也发明了一个自己的技巧。 我只想知道知道整数的位数是否正确 for (int i = 1; i < 11; i++) { if (Math.abs(number) < (j = Math.pow(10, i))) { System.out.println("Number of Digits : "+i); break; } } for(int i=1;i恰好是否

我有一个要求,我需要找到整数中的位数。 我搜索了一下,找到了一些窍门。但我也发明了一个自己的技巧。 我只想知道知道整数的位数是否正确

for (int i = 1; i < 11; i++) {
    if (Math.abs(number) < (j = Math.pow(10, i))) {
        System.out.println("Number of Digits : "+i);
        break;
    }
}
for(int i=1;i<11;i++){
if(数学绝对值(数字)<(j=数学功率(10,i))){
System.out.println(“位数:+i”);
打破
}
}
我把11作为限制,因为最大整数是11位数。 请让我知道这是否是一个正确的方法


请注意,我没有使用任何字符串api的选项。

您的解决方案不会运行良好。对于一项简单的任务来说,这太复杂了。如果这个数字再大一点,那就太慢了

你应使用:

String.valueOf(number).length()

简单易读,可扩展性更好。

您的解决方案性能不佳。对于一项简单的任务来说,这太复杂了。如果这个数字再大一点,那就太慢了

你应使用:

String.valueOf(number).length()

简单易读,它会变好很多。

注意,如果代码>数字< /代码>恰好是否定的,这将把否定符号视为“数字”;负号不是数字,说得对!还有逗号和点。对字符串(或附加的临时字符串)使用替换方法可以解决此问题。如果
number
int
,如问题中所述,你不会有逗号或点。事实上,我被告知不要使用字符串。即使是最大的整数,循环也不会超过11次迭代。请注意,如果代码>数字< /代码>恰好是否定的,这将把否定符号视为“数字”;负号不是数字,说得对!还有逗号和点。对字符串(或额外的临时字符串)使用replace方法可以解决问题。如果问题中指定的
number
int
,则不会有任何逗号或点。事实上,我被告知不要使用字符串。即使是最大的整数,循环也不会超过11次迭代。这太复杂了。您可以使用:
int c=0获取任意数
n
的长度
c
;当(n>0){n=n/1;C++;}
,它也会缩放得很快(比转换成字符串和计数长度快,大约一半时间)。对于这样一个简单的任务,不要使用像
pow
这样昂贵的函数。它太复杂了。您可以使用:
int c=0获取任意数
n
的长度
c
;当(n>0){n=n/1;C++;}
,它也会缩放得很快(比转换成字符串和计数长度快,大约一半时间)。对于这样简单的任务,不要使用昂贵的函数,如
pow