获取整数中位数的方法?

2022-08-31 04:30:46

有没有比此方法更整洁的方法来获取 int 中的位数?

int numDigits = String.valueOf(1000).length();

答案 1

您基于String的解决方案是完全可以的,没有什么“不整洁”的。你必须意识到,从数学上讲,数字没有长度,也没有数字。长度和数字都是特定基数(即字符串)中数字的物理表示的属性。

基于对数的解决方案在内部执行的操作与基于 String 的解决方案(某些)执行的操作相同,并且可能(微不足道地)更快地完成,因为它只产生长度并忽略数字。但我实际上不会认为它在意图上更清晰 - 这是最重要的因素。


答案 2

对数是你的朋友:

int n = 1000;
int length = (int)(Math.log10(n)+1);

注意:仅对 n > 0 有效。