【问题标题】:Checking a number's factor检查数字的因数
【发布时间】:2026-01-16 21:50:01
【问题描述】:

我不确定这个标题是否正确,但这基本上是我想要做的。

我正在尝试检查一个数字是否小于 100,如果不是,我想知道我需要将其除以 10 的哪个因数才能低于 100,即对于 7923,该因数是 100 79.23 和 452,936,489 的因子将是 10,000,000 以使其成为 45.2936489。

是否有一个函数或一段脚本可以做到这一点?

干杯

【问题讨论】:

  • 或者你可以只计算数字,如果超过 2,返回 10 ^ (digits - 2) ?
  • 谢谢布兰登。我认为没有任何功能?
  • @andrewsi 获胜。说真的,让它成为一个答案,我会支持它。
  • 抱歉,安德鲁,我不太确定你来自哪里?
  • 没有我不相信的内置函数

标签: php division


【解决方案1】:
$number = 452936489;
$factor = pow(10, ceil(log($number/100) / log(10)));

好的。基础数学:

您需要找到 10 的除数的幂,将您的数字减少到 100 以下,因此日志业务计算出将 10 变为原始数字所需的 10 的确切分数幂。结果大约是 6.6560373....

四舍五入到 7,然后用于将 10 提高到该次方。

10^7 = 10,000,000
452936489 / 10^7 = 45.2936489

【讨论】:

  • 所以解释一下这里发生了什么。
  • 感谢 Marc,但返回 1 作为一个因素
  • 好的。现在数学是直的。还没喝早茶,脑子有点糊
  • 哈哈。 “这个函数会将所有输入转换为一个数字,甚至是非标量值,这可能会导致 weird 结果。” - us1.php.net/manual/en/function.pow.php
  • @AbsoluteƵERØ:在这些部分的 9/10 代数中教授对数基转换。
【解决方案2】:
<?
$num = 7923;
$x = 10;
while(true)
{
    $result = $num/$x;
    if($result < 100) 
    {
        die($x.""); 
    }
    else
    {
        $x *= 10;
    }
}
?>

【讨论】: