我有下一个代码
int a,b,c;
b=1;
c=36;
a=b%c;
“%”运算符是什么意思?
答案 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
。
如果x
和y
是非整数值,则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;
这也清晰演示了完全相同的公式的结果如何不同。