在C中求整数的长度

我想知道如何在C中找到整数的长度

例如:

  • 1=>1
  • 25=>2
  • 12512=>5
  • 0=>1

等等

我怎样才能用C来做这个

C:

为什么不直接取数字绝对值的10进制对数,向下四舍五入,再加上一个呢?这适用于非0的正数和负数,并避免使用任何字符串转换函数

log10absfloor功能由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.此方法所涉及的计算的浮点性质可能导致其速度比更直接的方法慢。关于效率的一些讨论,请参见康康回答的评论

发表评论