0

我有一个从 0-999999999999 计数的内部计数器。

我希望它显示为 0-9999 之间的数字,然后再次翻转。

这表示:

  • 0 显示为 1
  • 1 显示为 2
  • 9998 显示为 9999
  • ...
  • 9999 显示为 1
  • 10000 显示为 2
  • ...
  • 19999 显示为 1
  • 20000 显示为 2

编辑:

1 + $number % 9999 是答案(感谢@Brad Christie)。我的预期结果表是错误的。(感谢@Tevo D)

4

3 回答 3

4
$x = 9280293;
$baseNineNineNineNine = $x % 9999;

使用 MOD,它会给你超过 9999 的余数(例如,任何数字除以 9999 可以进行 N 次,余数为 Y(你最终会得到 Y 作为值)

对于您要查找的数字,您可能想要+1在 MOD ( %) 之后获得的任何值,或使用10000

另请参阅模数运算符

于 2011-11-10T19:02:47.430 回答
3

用 10000 提醒,保证结果在 0 到 9999 之间并翻转

$result = $int % 10000;
于 2011-11-10T19:05:26.700 回答
2

您的值表与您要求的不符。在示例中,您将 9999 个结果值 (1-9999) 用于 10000 个输入值。在文本中,您说的是 10000 个输出值 (0-9999)。

这就是我认为你真正想要的。该算法将输出 1-9999,然后再次翻转到 1。

换句话说,这个解决方案将提供一个四位非零值:

$result = $int % 9999 + 1;

输出与您的示例不匹配,因为您的示例每 10000 个值滚动一次,而不是 9999。这是输出:

input   output
0       1
1       2
....      ....
9997      9998
9998      9999
9999      1       <--- 9999 * 1
10000     2
....      ....
19996     9998
19997     9999
19998     1       <--- 9999 * 2
19999     2
....      ....
19995     9998
19996     9999
19997     1       <--- 9999 * 3
19998     2
....      ....
于 2011-11-10T19:39:59.390 回答