2010-08-06 28 views
14

tôi có thể viết chương trìnhC# mô đun điều hành

int a = 3; 
int b = 4; 

Console.WriteLine(a % b); 

Câu trả lời tôi nhận được là 3. Làm thế nào để 3 mod 4 = 3 ???

Tôi không thể tìm ra cách tính này được tính theo cách này.

+13

Kết quả là chính xác. Bạn đã mong đợi điều gì để trở lại? –

+0

Bạn đang nghĩ đến b% a không phải là% b. –

+1

Tôi đã không hoàn toàn chắc chắn những gì mong đợi, nhưng tôi không thể tìm ra phần còn lại là 3. –

Trả lời

42

Bởi vì phần còn lại của 3/4 = 3.

http://en.wikipedia.org/wiki/Modulo_operator

Nếu bạn không thể tìm ra lý do tại sao thời gian còn lại là 3, chúng tôi đã có một số more serious problems đây.

+0

Điều đó thực sự rất buồn cười.Tuy nhiên, bạn có thể mở rộng vấn đề toán học bằng cách thêm một dấu thập phân vào đầu và nhiều số không với cổ tức để làm cho nó cuối cùng đi đều, bằng 0,75 như một thương và không còn lại. Tôi không biết người điều hành mod sẽ không làm điều đó, do đó tôi hỏi câu hỏi đó. –

+1

.75 không phải là thương. Theo định nghĩa, thương là một số nguyên. – quantumSoup

+0

Chỉ suy nghĩ số nguyên, không phải số thập phân –

15

3 mod 4 là phần còn lại khi 3 được chia cho 4.

Trong trường hợp này, 4 đi vào 3 zero lần với phần còn lại của 3.

44

Tôi đã không hoàn toàn chắc chắn những gì mong đợi, nhưng tôi không thể tìm ra cách các còn lại là 3.

Vì vậy, bạn có 3 cookies, và bạn muốn chia họ đều giữa 4 người.

Bởi vì có rất nhiều người hơn cookies, không có ai nhận một cookie (thương = 0) và bạn đã có một phần còn lại 3 cookie cho chính mình. :)

+29

Tại thời điểm đó, ba người khác nhảy bạn và lấy cookie của bạn. –

+4

Câu trả lời này dường như trả lời câu hỏi của OP theo cách thân thiện với trẻ em hơn. Bây giờ thậm chí tôi hiểu tại sao nó là 3, cảm ơn. lol –

1

tôi đã nghĩ rằng người dùng có thể đã hiểu câu trả lời .. bởi vì có rất nhiều lập trình viên giỏi .. trong từ ngữ đơn giản % cho bạn biết lời nhắc sau khi chia với số nguyên của riêng bạn.

ví dụ:

int a = int.parse(console.readline()); 
int b = a % 2; 

bây giờ bạn nhập 13, nó sẽ cung cấp 1, bởi vì sau khi lặn 13, 2 phần còn lại là 1 trong toán học đơn giản. Hy vọng bạn có điều đó.

+0

Chúc mừng cho lời giải thích của bạn –

2

Được giải thích bởi người khác, nhưng nếu bạn không muốn sử dụng toán tử "mod". Dưới đây là phương trình để tìm ra phần còn lại của "a" chia "n"

a-(n* int(a/n))

0

Một "như được giải thích bởi những người khác", nhưng nếu bạn tò mò về nhiều cách hơn để làm mô đun (hoặc sử dụng một phương pháp thay thế), bạn có thể read this article which benchmarks a few different ways.

Về cơ bản, cách nhanh nhất là các nhà điều hành mô đun kiểu cũ tốt, tương tự như:

if (x % threshold == some_value) 
{ 
    //do whatever you need to 
} 
Các vấn đề liên quan