2012-01-17 29 views

Trả lời

25

Đó là một modulo operator. Xem này documentation hoặc the specification để biết thêm thông tin về toán tử số học JavaScript.

% (Modulus)

Các nhà điều hành mô đun được sử dụng như sau:

var1% var2

Các nhà điều hành mô đun trả về toán hạng đầu tiên modulo thứ hai toán hạng, đó là , var1 modulo var2, trong câu lệnh trước, trong đó var1 và var2 là các biến. Hàm modulo là số nguyên phần còn lại của phân chia var1 bằng var2. Ví dụ, 12% 5 trả về 2. Kết quả sẽ có cùng dấu như var1; tức là, −1% 2 trả về −1.

+0

Nếu bạn mong đợi toán tử trả về một số nguyên (Ví dụ để tính toán lịch), Bạn nên cắt bớt var1 và var2 thành số nguyên trước khi áp dụng% -operator. Modolus được định nghĩa như thế, và người ta không thể sử dụng% như là. Ví dụ: Chủ nhật cuối cùng vào tháng 3 năm 2017. '31 - ((((5 * 2017)/4) + 4)% 7)) == 25.75 // Không phải là ngày hợp lệ 31 - (~~ (((((5 * 2017)/4) + 4)% 7)) == 26 // Chính xác' –

6

Đó sẽ là modulo operator.

Nó trả phần còn lại của phép chia:

var remainder = 3 % 2; // equals 1 
3

Toán tử mô-đun (%) trả về phần còn lại.

Nếu một trong hai giá trị là một chuỗi, một nỗ lực được thực hiện để chuyển đổi chuỗi thành một số.

alert(5%3) sẽ cảnh báo 2

9

Nó trả phần còn lại của một phép chia. 5%2 trả về 1

6

Đây là điều hành modulo.
Nó tính phần còn lại.

Nếu chúng ta làm 23% 10,
đầu tiên, chúng tôi chia 23 bằng 10 mà tương đương với 2,3
sau đó đi 0,3 * (số chia) 10
= 3

1

% hoạt động như toán tử modulo, nhắc nhở phân chia trả về. Ví dụ:

<script> 
    var x = 5; 
    var y = 2; 
    var z = x % y; 
    alert(z); 
</script> 

Điều này sẽ cảnh báo 1.

8

ES6 Cập nhật:

Như đã giải thích trong câu trả lời khác, nó sẽ trả phần còn lại sau khi chia cổ tức bằng ước, tuy nhiên điều này là không còn điều hành modulo, đây là remainder operator.sự khác biệt là kết quả điều hành modulo sẽ lấy dấu hiệu của số chia, không phải là cổ tức.Quoted from MDN

Các nhà điều hành còn lại trả phần còn lại còn lại khi một toán hạng được chia bởi một toán hạng thứ hai. Nó luôn luôn có dấu hiệu của cổ tức, không phải là số chia. Nó sử dụng hàm modulo tích hợp để tạo ra kết quả, là phần còn lại của số nguyên phân chia var1 theo var2 - ví dụ - var1 modulo var2. There is a proposal to get an actual modulo operator in a future version of ECMAScript, sự khác biệt là kết quả toán tử modulo sẽ lấy dấu của số chia, không phải là số chia.

Ví dụ:

-10 % 3 // -1 
10 % -3 // 1 
2

Chỉ trong trường hợp, nếu ai đó đang tìm kiếm một chức năng modulo động sản (trong đó sẽ luôn luôn nhận được dấu hiệu của số chia), bạn có thể sử dụng này:

function Modulo(num, denom) 
{ 
    if (num%denom >= 0) 
    { 
     return Math.abs(num%denom); 
    } 
    else 
    { 
     return num%denom + denom; 
    } 
} 

Math.abs là để ngăn chặn trường hợp -12% 12 → -0, được coi là bằng 0 nhưng được hiển thị là -0.