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

use*_*999 7 math logarithm

int length = (int) floor( log10 (float) number ) + 1;
Run Code Online (Sandbox Code Playgroud)

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

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

Yu *_*Hao 9

对于number具有n数字的整数,它的值介于10^(n - 1)(包含)和之间10^n,因此log10(number)介于n - 1(包含)和之间n.然后该函数floor减少小数部分,将结果保留为n - 1.最后,添加1到它会给出位数.

  • 很好......你声称它不在话题,然后回答它......好玩! (12认同)

Ray*_*ger 8

考虑一个四位数的数字x介于两者之间1000 <= x < 10000.取所有三个组件的对数基数10给出3.000 <= log(x, 10) < 4.000.取每个组件的底线(或int)并添加一个4 <= int(log(x, 10))+1 <= 4.

忽略舍入误差,这会给出x中的位数.

  • 我建议用`<4.0`替换`<= 3.999`(对于`x> = 9978`不是这样). (2认同)