我想问一下怎样才能得到Integer中的数字长度。例如:
$num = 245354;
$numlength = mb_strlen($num);
在本例中,$numlength
应为6。不知何故我不能让它工作?
谢谢
编辑:上面的示例代码--^及其各自的方法mb_strlen();
工作得很好。
发布于 2015-02-10 22:13:30
也许:
$num = 245354;
$numlength = strlen((string)$num);
发布于 2015-02-10 22:36:31
被接受的答案不适用于大数字。要计算任意数字的长度,更好的方法是通过检查0
来调用floor(log10($num) + 1)
。
$num = 12357;
echo $num !== 0 ? floor(log10($num) + 1) : 1; // prints 5
它有多个优点。它更快,你不需要进行类型转换,它适用于大数字,它适用于不同的数字系统,如bin,hex,oct。
该方程以10为底进行对数运算,然后将其作为底数并加1。
这个解决方案可以独立地在底上工作,所以如果你想计算二进制或十六进制的长度,只需更改对数的底。
发布于 2019-11-13 08:29:29
可接受的解决方案在评估负数时会出现问题。
它与正数一起工作:
$num = 245354;
$numlength = strlen((string)$num);
// Result: 6
但如果是负数,则将(-)添加到计数:
$num = -245354;
$numlength = strlen((string)$num);
// Result: 7
快速解决方法:
$num = -245354;
$numlength = strlen((string)abs($num));
// Result: 6
https://stackoverflow.com/questions/28433798
复制相似问题