int length = (int) floor( log10 (float) number ) + 1;
我的问题本质上是一个数学问题:为什么取一个数字的log10(),将该数字加起来,加1,然后将其转换为int正确计算出数字的长度?
我真的想知道深刻的数学解释!
答案 0 :(得分:9)
对于具有number
位数的整数n
,其值在10^(n - 1)
(包含)和10^n
之间,因此log10(number)
在n - 1
(包含)和n
之间。然后函数floor
减少小数部分,将结果保留为n - 1
。最后,向其添加1
会给出位数。
答案 1 :(得分:7)
考虑一个四位数的数字 x 介于1000 <= x < 10000
之间。取所有三个组件的日志基数10得到3.000 <= log(x, 10) < 4.000
。取每个组件的底线(或int)并添加一个组件会得到4 <= int(log(x, 10))+1 <= 4
。
忽略舍入错误,这会为您提供 x 中的位数。