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

結果が 0 から 9999 の間でロールオーバーすることを保証する 10000 で注意してください。

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

値のテーブルは、あなたが求めているものと一致しません。この例では、10000 個の入力値に対して 9999 個の結果値 (1 ~ 9999) を使用しています。テキストでは、10000 個の出力値 (0-9999) を言っています。

ここにあなたが本当に求めているものがあると思います。このアルゴリズムは 1 ~ 9999 を出力してから、再び 1 にロールオーバーします。

つまり、このソリューションは 4 桁のゼロ以外の値を提供します。

$result = $int % 9999 + 1;

この例では、9999 ではなく 10000 の値ごとにロールオーバーしているため、出力は例と一致しません。出力は次のとおりです。

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 に答える