'%'运算符是什么意思?

时间:2010-07-16 11:53:00

标签: c# operators

我有下一个代码

int a,b,c;
b=1;
c=36;
a=b%c;

“%”运算符是什么意思?

11 个答案:

答案 0 :(得分:26)

modulo (or modulus) operator

  

模数运算符(%)在将第一个操作数除以第二个操作数后计算余数。

例如:

class Program
{
    static void Main()
    {
        Console.WriteLine(5 % 2);       // int
        Console.WriteLine(-5 % 2);      // int
        Console.WriteLine(5.0 % 2.2);   // double
        Console.WriteLine(5.0m % 2.2m); // decimal
        Console.WriteLine(-5.2 % 2.0);  // double
    }
}

示例输出:

1
-1
0.6
0.6
-1.2

请注意,%运算符的结果等于x – (x / y) * y,如果y为零,则抛出DivideByZeroException

如果xy是非整数值,则x % y计算为x – n * y,其中n是小于或等的最大可能整数等于x / y C#4.0规范 中的详细信息 7.8.3剩余运算符 )。

有关更多详细信息和示例,您可能需要查看相应的维基百科文章:

  

Modulo operation (在维基百科上)

答案 1 :(得分:6)

这是Modulo运算符。它将为您提供除法运算的剩余部分。

答案 2 :(得分:5)

%是许多C语言中的余数运算符。

3 % 2 == 1
789 % 10 = 9

负面数字有点棘手。在例如Java和C#,结果与被除数的符号相同:

-1 % 2 == -1

例如C ++这是实现定义的。

另见

参考

答案 3 :(得分:3)

它是模数运算符。也就是说,2%2 == 0,4%4%2 == 0(2,4可被2整除,0剩余),5%2 == 1(2进入5,其中1为余数。)

答案 4 :(得分:2)

这是modulo运营商。即它是除法后的余数1 % 36 == 1(0余数1)

答案 5 :(得分:1)

这是模运算符,它找到一个数字除以另一个数的余数。

因此,在这种情况下,a将是b的剩余部分除以c

答案 6 :(得分:1)

这是模数,但你的例子并不是很好用。当两个整数被分割时,它会给出余数。

e.g。 a = 7 % 3将返回1,因为7除以3是2,剩下1。

答案 7 :(得分:0)

是模数运算符

using System;
class Test
{
    static void Main()
    {

        int a = 2;
        int b = 6;

        int c = 12;
        int d = 5;

        Console.WriteLine(b % a);
        Console.WriteLine(c % d);
        Console.Read();
    }
}

输出:

0
2

答案 8 :(得分:0)

是几乎所有语言都可用的基本运算符,通常称为模运算符。 它给出了剩余的结果。

答案 9 :(得分:0)

好吧,我确实知道这一点,直到尝试一个计算器并且基本上如此玩耍:
5 % 2.2 = 0.6就像在计算器5/2.2 = 2.27上说话一样,然后将.27乘以2.27,然后你得到0.6。希望这会有所帮助,它帮助了我=]


答案 10 :(得分:-3)

此处没有人提供任何示例完全如何等式可以返回不同的结果,例如将 37%6 与<进行比较强大> int x % int y ,在你们有些人因为你做了之前感到沮丧之前,暂停片刻并考虑一下,根据Dirk Vollmar在这里(x - (x / y) * y)解析为((x - (x / y)) * y)乍一看似乎相当简单,但并非所有数学都以相同的顺序执行。

由于不是每个方程都有适当的括号,一些学校会教导方程式解析为(x - ((x / y) * y)),而其他学校教授37/6

现在我尝试了我的示例(37%6&amp; (x - ((x / y) * y)))并找出了预期的选择(if),我甚至展示了一个精心构建的using System; class Test { static void Main() { float exact0 = (37 / 6); //6.1666e∞ float exact1 = (37 % 6); //1 float exact2 = (37 - (37 / 6) * 6); //0 float exact3 = ((37 - (37 / 6)) * 6); //0 float exact4 = (37 - ((37 / 6) * 6)); //185 int a = 37; int b = 6; int c = 0; int d = a; int e = b; string Answer0 = ""; string Answer1 = ""; string Answer2 = ""; string Answer0Alt = ""; string Answer1Alt = ""; string Answer2Alt = ""; Console.WriteLine("37/6: " + exact0); Console.WriteLine("37%6: " + exact1); Console.WriteLine("(37 - (37 / 6) * 6): " + exact2); Console.WriteLine("((37 - (37 / 6)) * 6): " + exact3); Console.WriteLine("(37 - ((37 / 6) * 6)): " + exact4); Console.WriteLine("a: " + a + ", b: " + b + ", c: " + c + ", d: " + d + ", e: " + e); Console.WriteLine("Answer0: " + Answer0); Console.WriteLine("Answer0Alt: " + Answer0Alt); Console.WriteLine("Answer1: " + Answer1); Console.WriteLine("Answer0Alt: " + Answer1Alt); Console.WriteLine("Answer2: " + Answer2); Console.WriteLine("Answer2Alt: " + Answer2Alt); Console.WriteLine("Init Complete, starting Math..."); Loop { if (a !< b) { a - b; c +1;} if else (a = b) { a - b; c +1;} else { String Answer0 = c + "." + a; //6.1 //this is = to 37/6 in the fact that it equals 6.1 ((6*6=36)+1=37) or 6 remainder 1, //which according to my Calculator App is technically correct once you Round Down the .666e∞ //which has been stated as the default behavior of the C# / Operand //for completion sake I'll include the alternative answer for Round Up also String Answer0Alt = c + "." + (a + 1); //6.2 Console.WriteLine("Division Complete, Continuing..."); Break } } string Answer1 = ((d - (Answer0)) * e); //185.4 string Answer1Alt = ((d - (Answer0Alt​)) * e); // 184.8 string Answer2 = (d - ((Answer0) * e)); //0.4 string Answer2Alt = (d - ((Answer0Alt​) * e)); //-0.2 Console.WriteLine("Math Complete, Summarizing..."); Console.WriteLine("37/6: " + exact0); Console.WriteLine("37%6: " + exact1); Console.WriteLine("(37 - (37 / 6) * 6): " + exact2); Console.WriteLine("((37 - (37 / 6)) * 6): " + exact3); Console.WriteLine("(37 - ((37 / 6) * 6)): " + exact4); Console.WriteLine("Answer0: " + Answer0); Console.WriteLine("Answer0Alt: " + Answer0Alt); Console.WriteLine("Answer1: " + Answer1); Console.WriteLine("Answer0Alt: " + Answer1Alt); Console.WriteLine("Answer2: " + Answer2); Console.WriteLine("Answer2Alt: " + Answer2Alt); Console.Read(); } } }循环(即使我忘记了每个行结束分号)来模拟最基本尺度上的除法方程,因为这实际上是我的观点,方程是相似的,但基本上是不同的。 这是我从删除的帖子中记得的内容(这花了我一个小时从我的手机输入,缩进是双重间隔)

add_filter('woocommerce_cart_item_name', 'add_variations_in_cart', 10, 3);
function add_variations_in_cart($name, $cart_item, $item_key){
    $product_variation = '';
    if(!empty($cart_item['variation_id']) && $cart_item['variation_id'] != 0 ){
       if(is_array($cart_item['variation']) && !empty($cart_item['variation'])){
          foreach ($cart_item['variation'] as $key => $value) {
             $product_variation .= '<br>'.ucfirst(str_replace('attribute_pa_', '', $key)).' : '.ucfirst($value);
        }
    }
}

echo $name.$product_variation; 

这也清晰演示了完全相同的公式的结果如何不同。