Hỏi về hàm lấy phần nguyên và phần dư của một phép chia

Liên hệ QC
Đúng rồi bác ạ. Vấn đề này em đã nói nhiều lần trên diễn đàn, và trong cuộc thi trắc nghiệm hôm Sinh Nhật cũng có một câu nhắc lại vấn đề này.

Các bạn đừng nghĩ rằng INT là hàm lấy phần nguyên của một phép chia. Điều này là sai. Nó chỉ "có vẻ đúng" khi tham số của INT là một số dương. Vì theo định nghĩa, INT là HÀM LÀM TRÒN XUỐNG MỘT SỐ ĐẾN SỐ NGUYÊN GẦN NHẤT.

Còn hàm dùng để lấy phần nguyên của một phép chia, là hàm QUOTIENT.

Làm quen với QUOTIENT, các bạn sẽ thấy hàm MOD và QUOTIENT tương đương nhau về cú pháp: =Hàm(số chia, số bị chia), chỉ khác là MOD thì lấy phần dư, QUOTIENT thì lấy phần nguyên. Trong khi dùng INT thì buộc phải gõ thêm dấu chia vào đó, vì tham số của INT là một con số, chứ nó không biết số chia, số bị chia là gì hết.

Hi các Pro làm gì trong Excel có cái hàm Quotient
Các pro xem lai nhé
 
Thí dụ lấy phần nguyên của phép chia giữa A1 và B1

Cách 1:
=INT(ABS(A1/B1))*IF(A1/B1<0;-1;1)

Cách 2:
=INT(ABS(A1/2))*A1/B1/ABS(A1/B1)

Cách nào cũng thua xa Quotient.
Em thì làm vầy:
PHP:
=INT(ABS(A1/B1))*SIGN(A1*B1)
Cũng không đến nỗi nào
Ẹc... Ẹc...
 
Ấy vậy mà kết quả Quotient lại có phân biệt -0 và +0
Và thử =(-0 = 0) = False.
 
Ấy vậy mà kết quả Quotient lại có phân biệt -0 và +0
Và thử =(-0 = 0) = False.
Cái đó em thấy (và chẳng hiểu sao nó có thể ra được kết quả như vậy)
Dù sao thì cái thằng -0 ấy khi cộng cho 0 nó vẫn cứ là Zero thôi ---> Tức nếu mang kết quả ấy để tính toán thì cũng không có vấn đề gì sai lệch cả
 
Cái định nghĩa này có vẻ không chính xác. Nếu nói như định nghĩa này thì INT(0.9) phải là 1 chứ ở đây kết quả là 0
Theo tôi thì đúng nhất phải định nghĩa là "INT là hàm làm tròn xuống số nguyên gần nhất"

:-=:-= Bạn ơi, định nghĩa phần nguyên là gì mà bạn lại có một định nghĩa hay thế?
 
cóa 1 câu như thế này:lấy phần nguyên của số lượng/ số lượng trong thùng. trong đó ,số lượng trong thùng là 24 nêu tên là"beer", còn lại là 20, mời các pác giải hộ e , chân thành cảm ơn!
 
cóa 1 câu như thế này:lấy phần nguyên của số lượng/ số lượng trong thùng. trong đó ,số lượng trong thùng là 24 nêu tên là"beer", còn lại là 20, mời các pác giải hộ e , chân thành cảm ơn!

Hỏi cái gì mà tối nghĩa quá trời. Theo nguyên tắc của người đi học, diễn tả được vấn đề một cách rõ ràng thì coi như đã giải được gần hêt (phần còn lại chỉ cần gu gô hoặc hỏi ở diễn đàn)

Hình như bạn muốn tìm số thùng chứa phải không?
= QUOTIENT(số lượng - 1, IF(thung="Beer",24,20)) + 1

/* thêm */

Quên mất, cách trên là giải theo toán. Trên Excel thì chỉ cần như vầy:
= CEILING(số lượng / IF(thung="Beer",24,20), 1)
 
Lần chỉnh sửa cuối:
Các bạn hãy tính thử =mod(19,-13) trong excel. Kết quả phần dư bằng bao nhiêu?
 
Bạn có thử trong excel chưa? Kết quả là bằng -7 đấy. Cần một lời giải thích?
công thức này MOD(n, d) = n - d*INT(n/d) ; áp dụng đúng ra kết quả là -7 mà bạn
19/(-13)=-1.4... int(-1.444)=-2
19-13*(-2) = -7 có gì sai không
 
Bạn có thử trong excel chưa? Kết quả là bằng -7 đấy. Cần một lời giải thích?

Tôi là dân chuyên nghiệp về dữ liệu mà. Cái nào chưa thử tôi nói thẳng chưa thử. Và nếu đã thử thì tôi thử có quy trình hẳn hoi: thử trị biên (border test), thử trị nhóm mẫu (sample test), và thử quy nạp (regression test).

Chỉ là trong bài #33, tôi copy lộn dòng của kết quả MOD(19,-17). Đúng thì phải là MOD(19,-13) = -7
(Tôi thử trên một cột nhiều trị, cho mẫu số chạy từ -1 đến -50 để quan sát chiều hướng của kết quả, và cũng để khẳng định sự tương đương của công thức nêu trên).

Nhưng nói cho cùng thì MS áp dụng hàm MOD như vậy là đúng như họ (MS) lý luận rồi, đâu có sai chỗ nào (xem giải thích chi tiết của philndhsp)
Nếu bạn cho là sai thì theo bạn kết quả đúng là bao nhiêu?
 
Tôi là dân chuyên nghiệp về dữ liệu mà. Cái nào chưa thử tôi nói thẳng chưa thử. Và nếu đã thử thì tôi thử có quy trình hẳn hoi: thử trị biên (border test), thử trị nhóm mẫu (sample test), và thử quy nạp (regression test).

Chỉ là trong bài #33, tôi copy lộn dòng của kết quả MOD(19,-17). Đúng thì phải là MOD(19,-13) = -7
(Tôi thử trên một cột nhiều trị, cho mẫu số chạy từ -1 đến -50 để quan sát chiều hướng của kết quả, và cũng để khẳng định sự tương đương của công thức nêu trên).

Nhưng nói cho cùng thì MS áp dụng hàm MOD như vậy là đúng như họ (MS) lý luận rồi, đâu có sai chỗ nào (xem giải thích chi tiết của philndhsp)
Nếu bạn cho là sai thì theo bạn kết quả đúng là bao nhiêu?

Vâng! Theo công thức và hàm mod trong excel như vậy là đúng rồi. Do bạn copy nhầm nên tôi có ý kiến vậy thôi.
Chúc vui vẻ!
 
"INT là hàm làm tròn xuống số nguyên gần nhất"

Cái này là theo Microsoft Support chứ :)
"INT là hàm làm tròn xuống số nguyên gần nhất" - Tức là kết quả trả về của hàm INT luôn luôn bé hơn hoặc bằng giá trị đã lấy hàm INT.
Khác với định nghĩ trên một từ "xuống". Ngữ pháp Việt Nam thật lợi hại.
 
Web KT
Back
Top Bottom