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
;当(n>0){n=n/1;C++;}c
这样昂贵的函数。它太复杂了。您可以使用:pow
int c=0获取任意数
,它也会缩放得很快(比转换成字符串和计数长度快,大约一半时间)。对于这样简单的任务,不要使用昂贵的函数,如的长度n
;当(n>0){n=n/1;C++;}c
。pow