【问题标题】:Adding and subtracting within a range of numbers and looping round在一个数字范围内进行加减运算并循环
【发布时间】:2012-04-05 10:20:07
【问题描述】:

我想知道如何在设定的范围内进行数字的加减运算,以及如何循环返回,例如下面的示例;

范围:1 - 10

所以如果我现在有数字 7 并添加 5,我希望数字变为 2

8、9、10,循环到 1、2。

如果我减去也是一样,所以我有数字 3,我减去 4,所以我应该剩下 9。

2, 1, 循环到 10, 9

我希望这是有道理的。

谢谢。

【问题讨论】:

    标签: php math range addition subtraction


    【解决方案1】:

    您可以使用 % 运算符。

    除法后计算余数。

    例如:

    $d = 10;
    
    $x = 7;
    
    $y = 5;
    
    echo ($x + $y) % $d;
    

    2;

    对于负值,您只需删除 MINUS

    【讨论】:

    • 如果我这样做 $r = 10; echo (2 - 5) % $r; 它返回给我 -3 当它低于 1 我需要它转到 10 然后从那里下降,所以上面应该输出我 7。跨度>
    • 使用$r = 10; $s = 2 - 5; echo $s < 0 ? $r + $s : $s % $r;
    • 谢谢,你的似乎是最简单的。
    【解决方案2】:

    使用取模运算符。

    result = (a + b) % 10;
    

    【讨论】:

      【解决方案3】:

      您可以使用模函数,例如 (7+5)%10 = 2

      【讨论】:

        【解决方案4】:

        试试这个:

        $range = range(1,10);
        $min = min($range);
        $max = max($range);
        
        function operate( $a, $b, $operation ) {
            global $max, $min;
        
            switch( $operation ) {
                case '+':
                    $a += $b;
                    break;
                case '-':
                    $a -= $b;
                    break;
            }
        
            if( $a < $min ) {
                return $max + $a;
            } else if( $a > $max ) {
                return $a - $max;
            }
        }
        

        希望对你有帮助。

        【讨论】:

        • 这似乎不起作用,它只是将数字相加并给我错误的数字。
        【解决方案5】:

        你可以用类似的代码来做到这一点

        $range = array('from' => 3, 'to' => 13);
        $dist = $range['to'] - $range['from'];
        $a = 7;
        $b = 14;
        
        echo ($dist + ($a % $range['to'] - $b % $range['to'])) % $dist; // $a - $b
        echo ($dist + ($a % $range['to'] + $b % $range['to'])) % $dist; // $a + $b
        

        【讨论】:

          【解决方案6】:

          Modulo 会像其他人展示的那样发挥作用,但您还必须考虑范围的下限。

          例如在一小时范围内循环任意值将起作用,因为它是从零开始的。但是如果你想在一个月范围内循环一个值,你会在最后一天遇到麻烦,因为:

          31 % 31 = 0

          所以当你应该保持在 31 时,你会循环到零。

          要处理任何范围,您需要这样做:

          $min = 5;
          $max = 15;
          $value = 25; // The range is 11, so we want this turned into 14
          
          $range = $max - $min + 1;
          $value = (($value-$min) % $range) + $min;
          

          处理低于最小值的值:

          $range = $max - $min + 1;
          $value = ($min - $value) % $range;
          $value = $max - ($value - 1);
          

          【讨论】:

            猜你喜欢
            • 2017-02-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-11-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多