传递int = 0时查找整数位数

时间:2012-11-07 15:07:54

标签: algorithm math numbers digits logarithm

使用Java btw。但通常人们似乎都会这样做。

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.

这用于实现自然数构造函数,只是让人们有我的问题的上下文。

2 个答案:

答案 0 :(得分:0)

您列出的代码意味着-10的numDigits值为1,我认为这是不正确的。

如何将数字转换为字符串并获取字符串长度?

答案 1 :(得分:0)

如果您遇到特定的优化问题,请转到日志解决方案:

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

否则,我建议您使用String.valueOf解决方案,因为它对于未来的开发人员/维护人员来说更易读,更容易理解:

int length = String.valueOf(number).length();