如何使用log10正确计算整数的长度?

时间:2014-06-12 05:05:34

标签: math logarithm

int length = (int) floor( log10 (float) number ) + 1;

我的问题本质上是一个数学问题:为什么取一个数字的log10(),将该数字加起来,加1,然后将其转换为int正确计算出数字的长度?

我真的想知道深刻的数学解释!

2 个答案:

答案 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 中的位数。