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