使用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.
这用于实现自然数构造函数,只是让人们有我的问题的上下文。
答案 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();