我想知道如何在C中找到整数的长度
例如:
- 1=>1
- 25=>2
- 12512=>5
- 0=>1
等等
我怎样才能用C来做这个
C:
为什么不直接取数字绝对值的10进制对数,向下四舍五入,再加上一个呢?这适用于非0的正数和负数,并避免使用任何字符串转换函数
log10
、abs
和floor
功能由math.h
提供。例如:
intndigits=floor(log10(abs(u整数)))+1;
您应该将其包装在一个子句中,确保是\u整数!=0
,因为log10(0)
根据man 3 log
返回-ground\u VAL
此外,如果输入为负数,如果您对数字的长度(包括负号)感兴趣,则可能需要在最终结果中添加一个
爪哇:
intndigits=Math.floor(Math.log10(Math.abs(the_整数)))+1;
N.B.此方法所涉及的计算的浮点性质可能导致其速度比更直接的方法慢。关于效率的一些讨论,请参见康康回答的评论