我想知道如何在C中找到整数的长度。
例如:
- 1 => 1
- 25 => 2
- 12512 => 5
- 0 => 1
等等。
我怎样才能在C中做到这一点?
C:
您可以取数字绝对值的以 10 为底的对数,向下舍入,然后加一。这适用于非 0 的正数和负数,并且避免使用任何字符串转换函数。
The log10
, abs
, and floor
功能由提供math.h
。例如:
int nDigits = floor(log10(abs(the_integer))) + 1;
您应该将其包含在一个子句中,以确保the_integer != 0
, since log10(0)
回报-HUGE_VAL
根据man 3 log
.
此外,如果输入为负数,或者您对数字的长度(包括负号)感兴趣,您可能需要在最终结果中加一。
Java:
int nDigits = Math.floor(Math.log10(Math.abs(the_integer))) + 1;
N.B.此方法中涉及的计算的浮点性质可能会导致它比更直接的方法慢。有关效率的一些讨论,请参阅 Kangkan 答案的评论。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)