Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 如何使用log10正确计算整数的长度?_Math_Logarithm - Fatal编程技术网

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

Math 如何使用log10正确计算整数的长度?,math,logarithm,Math,Logarithm,我的问题本质上是一个数学问题:为什么取一个数字的log10(),加上这个数字,加上1,然后把它转换成整数,就能正确地计算出这个数字的长度 我真的很想知道深刻的数学解释请 对于具有n位的整数number,其值介于10^(n-1)(包含)和10^n,因此log10(number)介于n-1(包含)和n之间。然后,函数floor减少小数部分,将结果保留为n-1。最后,将1添加到其中给出数字的数目。考虑一下四位数字x在1000之间的某个位置。这个问题似乎离题了,因为即使它有一些代码,实际上是一个数学问题

我的问题本质上是一个数学问题:为什么取一个数字的log10(),加上这个数字,加上1,然后把它转换成整数,就能正确地计算出这个数字的长度


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

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

考虑一下四位数字x在
1000之间的某个位置。这个问题似乎离题了,因为即使它有一些代码,实际上是一个数学问题。@RobertDodier我不是说这是一个糟糕的问题,我只是说它离题了。也许这只是我的观点,但问题并不是真的关于编程,即使有一些代码。@YuHao log/exp的[基本]用法应该是程序员的工具带。。因为这是一个非常基本的问题,在一个常见的用例中用[伪]代码表示,所以我认为它在这里是“OK”的。几年前,我问了一个关于数学的问题,而不是重复的问题。严格地说,使用
log10
不起作用——至少不使用浮点。对于一个足够大的数字,对数的不精确性将足以使您的结果可以由您选择的任意位数输出。但是,你不能在
int
中体验到这一点-你必须使用大整数类型。这个问题似乎离题了,因为它要求数学公式的数学证明;这里不涉及编程。很好。。。你声称这是离题,然后回答。。。有趣@洛尼克斯:我仍然认为这是离题的,但问题下的评论表明,有些人不这样认为。而且,很难把所有这些都写下来作为评论。比如,
FLOOR(LOG10(n)+1)
。我建议替换

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