我有一个从 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)
$x = 9280293;
$baseNineNineNineNine = $x % 9999;
使用 MOD,它会给你超过 9999 的余数(例如,任何数字除以 9999 可以进行 N 次,余数为 Y(你最终会得到 Y 作为值)
对于您要查找的数字,您可能想要+1
在 MOD ( %
) 之后获得的任何值,或使用10000
另请参阅模数运算符
用 10000 提醒,保证结果在 0 到 9999 之间并翻转
$result = $int % 10000;
您的值表与您要求的不符。在示例中,您将 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
.... ....