मैं C # में पूर्णांक संख्याओं के लिए विभाजन और मोडुलो की गणना कैसे कर सकता हूं?
जवाबों:
इस तरह के प्रश्न पूछने से पहले, कृपया MSDN प्रलेखन की जाँच करें ।
जब आप दो पूर्णांकों को विभाजित करते हैं, तो परिणाम हमेशा पूर्णांक होता है। उदाहरण के लिए, 7/3 का परिणाम है 2. शेष 7/3 का निर्धारण करने के लिए, शेष ऑपरेटर ( % ) का उपयोग करें ।
int a = 5;
int b = 3;
int div = a / b; //quotient is 1
int mod = a % b; //remainder is 2
a
और b
यदि आप उनका उपयोग नहीं करने जा रहे हैं? : डी
वहाँ भी Math.DivRem
quotient = Math.DivRem(dividend, divisor, out remainder);
Math.DivRem
एक ऑपरेशन में डिव और मॉड की गणना नहीं करता है। यह सिर्फ एक सहायक कार्य है और इसका स्रोत कोड बिल्कुल: है public static int DivRem(int a, int b, out int result) { result = a%b; return a/b; }
।
div
rem
%
और /
ऑपरेटरों का पता लगाना चाहिए ।
मजेदार तथ्य!
'मापांक' ऑपरेशन को इस प्रकार परिभाषित किया गया है:
a % n ==> a - (a/n) * n
संदर्भ: मॉड्यूलर अंकगणित
तो आप कर सकते थे अपना स्वयं का रोल हैं, हालांकि यह% ऑपरेटर में निर्मित की तुलना में FAR धीमा होगा:
public static int Mod(int a, int n)
{
return a - (int)((double)a / n) * n;
}
संपादित करें: वाह, मिसकॉक बल्कि बुरी तरह से यहाँ मूल रूप से, धन्यवाद @joren मुझे पकड़ने के लिए
अब यहाँ मैं इस तथ्य पर भरोसा कर रहा हूं कि C # में डिवीजन + कास्ट-टू-इंट Math.Floor
(यानी यह अंश को गिराता है) के बराबर है , लेकिन "सही" कार्यान्वयन इसके बजाय कुछ इस तरह होगा:
public static int Mod(int a, int n)
{
return a - (int)Math.Floor((double)a / n) * n;
}
वास्तव में, आप निम्न के साथ% और "सच्चे मापांक" के बीच अंतर देख सकते हैं:
var modTest =
from a in Enumerable.Range(-3, 6)
from b in Enumerable.Range(-3, 6)
where b != 0
let op = (a % b)
let mod = Mod(a,b)
let areSame = op == mod
select new
{
A = a,
B = b,
Operator = op,
Mod = mod,
Same = areSame
};
Console.WriteLine("A B A%B Mod(A,B) Equal?");
Console.WriteLine("-----------------------------------");
foreach (var result in modTest)
{
Console.WriteLine(
"{0,-3} | {1,-3} | {2,-5} | {3,-10} | {4,-6}",
result.A,
result.B,
result.Operator,
result.Mod,
result.Same);
}
परिणाम:
A B A%B Mod(A,B) Equal?
-----------------------------------
-3 | -3 | 0 | 0 | True
-3 | -2 | -1 | -1 | True
-3 | -1 | 0 | 0 | True
-3 | 1 | 0 | 0 | True
-3 | 2 | -1 | 1 | False
-2 | -3 | -2 | -2 | True
-2 | -2 | 0 | 0 | True
-2 | -1 | 0 | 0 | True
-2 | 1 | 0 | 0 | True
-2 | 2 | 0 | 0 | True
-1 | -3 | -1 | -1 | True
-1 | -2 | -1 | -1 | True
-1 | -1 | 0 | 0 | True
-1 | 1 | 0 | 0 | True
-1 | 2 | -1 | 1 | False
0 | -3 | 0 | 0 | True
0 | -2 | 0 | 0 | True
0 | -1 | 0 | 0 | True
0 | 1 | 0 | 0 | True
0 | 2 | 0 | 0 | True
1 | -3 | 1 | -2 | False
1 | -2 | 1 | -1 | False
1 | -1 | 0 | 0 | True
1 | 1 | 0 | 0 | True
1 | 2 | 1 | 1 | True
2 | -3 | 2 | -1 | False
2 | -2 | 0 | 0 | True
2 | -1 | 0 | 0 | True
2 | 1 | 0 | 0 | True
2 | 2 | 0 | 0 | True
Enumerable.Range(0, 10).Select(x => (double)x / 10.0).Select(x => (int)x).ToList().ForEach(x => Console.WriteLine(x));
- सभी 0
Math.Floor(-10.0 / 3.0)
और एक ही बात नहीं-10 / 3
कर रहे हैं ।
/
ऑपरेटर का उपयोग करके विभाजन किया जाता है :
result = a / b;
मोडुलो डिवीजन %
ऑपरेटर का उपयोग करके किया जाता है :
result = a % b;
उपयोगकर्ता से दो पूर्णांक पढ़ें। फिर शेष और भागफल की गणना / प्रदर्शन करें,
// When the larger integer is divided by the smaller integer
Console.WriteLine("Enter integer 1 please :");
double a5 = double.Parse(Console.ReadLine());
Console.WriteLine("Enter integer 2 please :");
double b5 = double.Parse(Console.ReadLine());
double div = a5 / b5;
Console.WriteLine(div);
double mod = a5 % b5;
Console.WriteLine(mod);
Console.ReadLine();