Giải thích hàm mod của số âm (6 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

thechipmunks

Thành viên mới
Tham gia
23/11/10
Bài viết
4
Được thích
0
chào các bác, các bác cho e hỏi câu này hơi ngu.
e thấy mod(13;3) = 1 cái này e ko thắc mắc. nhưng tại sao mod(-13;3) lại = 2. e ngu nên ko hiểu được. vì nếu theo lý thuyết thì phải bằng 1 chứ. bác nào giải thích e với, e ngu excel lắm
 
Hic, câu hỏi này zui nhỉ? Chẳng biết giải thích cho bạn thế nào.
Nhưng có một điều như thế này: trường hợp bình thường thì không tính đến. Nhưng trường hợp thứ 2, khi mang dấu âm thì số đó nhân (x) với âm 2 (-2) rồi mới chia cho số sau. Túm lại, vì nó là như thế nên kết quả là như thế. Còn lý do sâu xa tại sao thì nhờ cao thủ nói tiếp.^^
 
rất cảm ơn các bác, có ai còn cao kiến gì ko ạ ?
 
Đó là do định nghĩa INT của Excel, khỏi bàn cãi.:

INT(n/d) = RoundDown(n/d, 0)
INT(n/d) = RoundDown(-13/3, 0)
INT(n/d) = RoundDown(-4.33333, 0)
INT(n/d) = -5

MOD(n, d) = n - d*INT(n/d)
MOD(-13, 3) = -13 - 3*(-5)
MOD(-13, 3) = -13 - (-15)
MOD(-13, 3) = 2

Nếu muốn ra kết quả -1 như ta tính nhẩm, thì dùng Trunc thay cho Int:

= -13 - 3*Trunc(-13/3)
 
Lần chỉnh sửa cuối:
Thế này nhé a = b.q + r
Trong đó:
q là thương
r là số dư, qui ước 0 =< r <|b|
do đó -13 = 3.(-5) + 2 nên mod(-13,3) = 2
tương tự -12 = 5.(-3) + 3 nên mod(-12,5) = 3
 
Thế này nhé a = b.q + r
Trong đó:
q là thương
r là số dư, qui ước 0 =< r <|b|
do đó -13 = 3.(-5) + 2 nên mod(-13,3) = 2
tương tự -12 = 5.(-3) + 3 nên mod(-12,5) = 3
Theo định lý phép chia có dư thì câu trả lời của bạn là đúng. Tuy nhiên nếu số chia là âm thì sẽ không đúng với hàm MOD. VD MOD(13,-3)=-2 nhưng tính theo định lý thì 13=(-3).(-4)+1.
 
Theo định lý phép chia có dư thì câu trả lời của bạn là đúng. Tuy nhiên nếu số chia là âm thì sẽ không đúng với hàm MOD. VD MOD(13,-3)=-2 nhưng tính theo định lý thì 13=(-3).(-4)+1.
con số thương (nguyên) -4 bạn lấy từ đâu (bằng cách nào)? Có phải bạn tính nhẩm 13/ (-3) = -4 dư 1?
Ví dụ MOD(123254567,-2564) thì bạn tính cách nào?
Excel tính bằng cách tính toán với hàm Int(13,-3) ra (-5) chứ không tính nhẩm.
 
Lần chỉnh sửa cuối:
Theo định lý phép chia có dư thì câu trả lời của bạn là đúng. Tuy nhiên nếu số chia là âm thì sẽ không đúng với hàm MOD. VD MOD(13,-3)=-2 nhưng tính theo định lý thì 13=(-3).(-4)+1.
Không đúng. Rõ ràng viết

Thế này nhé a = b.q + r
Trong đó:
q là thương
r là số dư, qui ước 0 =< r <|b|


là SAI. Cái "qui ước" kia sai hoàn toàn.

Với hàm MOD phải có 2 vế:
- MOD trả về r, tức số dư.
- Kết quả mà MOD trả về, tức r, phải CÙNG DẤU với SỐ CHIA, tức ở đây phải cùng dấu với b. Rất nhiều người quên, không biết "tính chất" thứ 2.

Những điều người ta viết chỉ đúng khi b DƯƠNG. Nhưng lúc đó thì 0 <= r < b - Không cần |b| vì b > 0.

Với b ÂM, tức b < 0, sẽ có điều kiện b < r <= 0. Vì thế MOD(13; -3) = -2 (a = 13, b = -3, q = -5, r = -2). Không thể có MOD(13; -3) = 1 vì r = 1 không cùng dấu với SỐ CHIA b = -3
 
Web KT

Bài viết mới nhất

Back
Top Bottom