PDA

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



feelingyes
11-01-08, 10:40 AM
Chào anh chị
Ví dụ em có phép tính 32/16 = 1 dư 15
Và câu hỏi của em là em dùng hàm nào để lấy số nguyên 32/16 = 1
Cám ơn anh chị

salam
11-01-08, 10:53 AM
Chào anh chị
Ví dụ em có phép tính 32/16 = 1 dư 15
Và câu hỏi của em là em dùng hàm nào để lấy số nguyên 32/16 = 1
Cám ơn anh chị 32/16=2 cơ mà làm sao lại bằng 1 được
Chắc là 31/16 = 1 dư 15 chứ
Bạn dùng hàm = Int(31/16) = 1
Thân.

kongcom
11-01-08, 11:20 AM
Tôi có cách này : tại ô kết quả bạn ghi : =INT(31/16)&" dư "&MOD(31,16)

le tin
16-07-09, 03:15 PM
Hàm Int lấy phần nguyên của số dương chứ
Int(-31/16) thì = - 2

BNTT
16-07-09, 03:42 PM
Hàm Int lấy phần nguyên của số dương chứ
Int(-31/16) thì = - 2
Đú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 (http://www.giaiphapexcel.com/forum/showpost.php?p=54560&postcount=32).

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.

huuthang_bd
16-07-09, 04:01 PM
INT là HÀM LÀM TRÒN MỘT SỐ ĐẾN SỐ NGUYÊN GẦN NHẤT
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"

thuongnguyen89
20-08-09, 02:15 AM
còn nếu muốn lấy cả phần nguyên và dư thì lồng cả hai hàm hả mấy bạn,ví dụ đề ra : đổi từ 10 ngày sang 1 tuần 3 ngày thì làm sao?

Pozsi
20-08-09, 06:39 AM
Tuần = INT(10/7) = 1
Ngày dư = Mod(10,7) = 3
Rồi đổi số 10 thành vị trí một ô nào đó là xong. VD: =MOD(C6,7) ; =INT(C6/7)
Vậy đó!
Chúc vui.

ndu96081631
20-08-09, 08:09 PM
Bạn dùng toán tử & để nối chúng lại với nhau
Ví dụ: cell A1 chứa số ngày (bằng 10 chẳng hạn) và bạn có:
=INT(A1/7) là số tuần
=MOD(A1,7) là số ngày lẻ
Vậy để nối chúng lại ta dùng:

=INT(A1/7) & " tuần và " & MOD(A1,7) & " ngày lẻ"
Bạn thử xem!

duongmanhquan
20-04-10, 12:57 PM
Bạn dùng toán tử & để nối chúng lại với nhau
Ví dụ: cell A1 chứa số ngày (bằng 10 chẳng hạn) và bạn có:
=INT(A1/7) là số tuần
=MOD(A1,7) là số ngày lẻ
Vậy để nối chúng lại ta dùng:

=INT(A1/7) & " tuần và " & MOD(A1,7) & " ngày lẻ"
Bạn thử xem!

ví dụ muốn chuyển 40ngày thành 1 tháng 1 tuần và 3 ngày, có thể viết như sau:
=INT(D1/30)&" tháng "&INT(MOD(D1;30)/7)&" tuần và "&MOD(INT(MOD(D1;30)/7);7)&" ngày lẻ"
trong đó mình mặc định d1 là 40, mỗi tháng 30 ngày.
Nếu tính đủ ngày trong tháng thì cách viết trên sẽ sai.(có tháng 28 ngày và có tháng 31 ngày)

huuthang_bd
20-04-10, 01:14 PM
ví dụ muốn chuyển 40ngày thành 1 tháng 1 tuần và 3 ngày, có thể viết như sau:
=INT(D1/30)&" tháng "&INT(MOD(D1;30)/7)&" tuần và "&MOD(INT(MOD(D1;30)/7);7)&" ngày lẻ"
trong đó mình mặc định d1 là 40, mỗi tháng 30 ngày.
Nếu tính đủ ngày trong tháng thì cách viết trên sẽ sai.(có tháng 28 ngày và có tháng 31 ngày)
Công thức của bạn sai nhé.
Mà đề tài này đã lâu rồi, vấn đề đã được giải quyết rồi...

dat_butmuc
20-04-10, 01:18 PM
ví dụ muốn chuyển 40ngày thành 1 tháng 1 tuần và 3 ngày, có thể viết như sau:
=INT(D1/30)&" tháng "&INT(MOD(D1;30)/7)&" tuần và "&MOD(INT(MOD(D1;30)/7);7)&" ngày lẻ"
trong đó mình mặc định d1 là 40, mỗi tháng 30 ngày.
Nếu tính đủ ngày trong tháng thì cách viết trên sẽ sai.(có tháng 28 ngày và có tháng 31 ngày)

Cái này thì đương nhiên, đây là các Bác ấy đang lấy các ví dụ giả định về số thôi mà.
Còn muốn chính xác thì theo tôi nghĩ phải tùy trường hợp nào cụ thể, các cao thủ trên diễn đàn giải quyết gọn ơ !
Nên đừng băn khoăn đúng sai về các ví dụ trên và trường hợp bạn nêu ra !

duongmanhquan
20-04-10, 01:21 PM
Xin lỗi, trong công thức trên mình viết phần tính ngày lẻ bị sai, trong trường hợp số tuần nhỏ hơn 1(sẽ làm tròn xuống 0) thì ngày cũng bằng 0. Bạn nào biết cách viết đúng xin chỉ giùm. Thanks

dat_butmuc
20-04-10, 01:45 PM
Xin lỗi, trong công thức trên mình viết phần tính ngày lẻ bị sai, trong trường hợp số tuần nhỏ hơn 1(sẽ làm tròn xuống 0) thì ngày cũng bằng 0. Bạn nào biết cách viết đúng xin chỉ giùm. Thanks

Dùng tạm cái dài dài này, cũng theo kiểu của bạn - nhưng chỉ sửa lại phần logic số học thôi?

=INT(D1/30)&" tháng "&INT(MOD(D1,30)/7)&" tuần và "&MOD(D1,INT(D1/30)*30+INT(MOD(D1,30)/7)*7)&" ngày lẻ"

huuthang_bd
20-04-10, 02:31 PM
Dùng tạm cái dài dài này, cũng theo kiểu của bạn - nhưng chỉ sửa lại phần logic số học thôi?

=INT(D1/30)&" tháng "&INT(MOD(D1,30)/7)&" tuần và "&MOD(D1,INT(D1/30)*30+INT(MOD(D1,30)/7)*7)&" ngày lẻ"
Không cần phức tạp như vậy đâu, lồng 2 hàm MOD() vào nhau là được rồi. Mà công thức của bạn bị sai nếu số ngày nhỏ hơn 7.

=INT(D1/30)&" tháng "&INT(MOD(D1,30)/7)&" tuần và "&MOD(MOD(D1,30),7)&" ngày lẻ"

hiepttr
21-07-11, 03:17 PM
trong excel mình đã làm một số thao tác như sau:
Từ số liệu thô (mình lấy từ Nova) mình có cột lý trình của cọc là: 0; 10.23; ...; 1035.76;...
Để hiển thị được theo dạng: Km[x]+[y] trong đó:
x: là Km được tính bằng số hàng ngàn
y: là số mét lẻ
- mình dùng hàm rounddown() hoặc int() để tách lấy x
- dùng hàm mod() để tách lấy y
- dùng cả 2 phương pháp (toán tử & và hàm concatenate()) để nối "Km",x,y nhưng đều bị lỗi là có một số hàng xuất hiện thêm phía sau một dãy số lẻ
Ai giúp mình với ! HELP ME !+-+-+-+
Lưu ý là số liệu thô của mình chỉ lẻ 2 số!
mình gửi kèm file đây!
(http://www.giaiphapexcel.com/forum/attachment.php?attachmentid=67064&stc=1&d=1311236709)Nếu "tiện tay" có thể gửi bài trả lời đến luckyman1805@yahoo.com

vodoi2x
21-07-11, 03:50 PM
trong excel mình đã làm một số thao tác như sau:
Từ số liệu thô (mình lấy từ Nova) mình có cột lý trình của cọc là: 0; 10.23; ...; 1035.76;...
Để hiển thị được theo dạng: Km[x]+[y]...

Chưa kịp down file của bạn, nhưng bạn áp dụng công thức sau:
Với A1 chứa giá trị
thì ô lấy kết quả dùng công thức sau

="Km"&TEXT(INT(A1),"000")&"+"&TEXT(100*(A1-INT(A1)),"00")

hoặc

="Km"&TEXT(INT(A1),"000+")&TEXT(100*(A1-INT(A1)),"00")

ndu96081631
21-07-11, 03:59 PM
trong excel mình đã làm một số thao tác như sau:
Từ số liệu thô (mình lấy từ Nova) mình có cột lý trình của cọc là: 0; 10.23; ...; 1035.76;...
Để hiển thị được theo dạng: Km[x]+[y] trong đó:
x: là Km được tính bằng số hàng ngàn
y: là số mét lẻ
- mình dùng hàm rounddown() hoặc int() để tách lấy x
- dùng hàm mod() để tách lấy y
- dùng cả 2 phương pháp (toán tử & và hàm concatenate()) để nối "Km",x,y nhưng đều bị lỗi là có một số hàng xuất hiện thêm phía sau một dãy số lẻ
Ai giúp mình với ! HELP ME !+-+-+-+
Lưu ý là số liệu thô của mình chỉ lẻ 2 số!
mình gửi kèm file đây!
(http://www.giaiphapexcel.com/forum/attachment.php?attachmentid=67064&stc=1&d=1311236709)Nếu "tiện tay" có thể gửi bài trả lời đến luckyman1805@yahoo.com
Công thức bạn đang dùng là:

=CONCATENATE($G$5,ROUNDDOWN(B6/1000,0),"+ ",H6)
Mà H6 lại là kết quả từ hàm MOD ---> Trong 1 vài trường hợp, hàm này cho kết quả không chính xác. vậy ta lồng thêm hàm ROUND vào là được rồi

=CONCATENATE($G$5,ROUNDDOWN(B6/1000,0),"+ ",ROUND(H6,5))

hiepttr
03-08-11, 10:37 AM
cam on ndu96081631, bạn đã giải quyết đúng vấn đề của mình.
nhưng vấn đề đặt ra là: Khi nào thì hàm MOD cho kết quả sai vậy.
Và nếu mình muốn có một kết quả "lấy phần dư" luôn đúng thì phải dùng hàm gì nhỉ?!
Ban vodoi2x thì đã hiểu sai ý mình, chắc lĩnh vực của bạn ko phải là "cầu đường"
Dù sao cũng cảm ơn ý kiến của bạn, mình sẽ dùng hàm text cho trường hợp hữu dụng sau này

huuthang_bd
03-08-11, 11:25 AM
cam on ndu96081631, bạn đã giải quyết đúng vấn đề của mình.
nhưng vấn đề đặt ra là: Khi nào thì hàm MOD cho kết quả sai vậy.
Và nếu mình muốn có một kết quả "lấy phần dư" luôn đúng thì phải dùng hàm gì nhỉ?!
Ban vodoi2x thì đã hiểu sai ý mình, chắc lĩnh vực của bạn ko phải là "cầu đường"
Dù sao cũng cảm ơn ý kiến của bạn, mình sẽ dùng hàm text cho trường hợp hữu dụng sau này
Không riêng gì hàm MOD() mà khi làm việc với các số lẻ đôi khi kết quả tính của Excel có sai số. Tuy nhiên, những sai số này khá nhỏ, thường chỉ vài phần triệu tỷ. Vì vậy, bạn có thể khắc phục bằng cách đưa vào hàm ROUND() với khoản 10 số lẻ vì thường nhu cầu của ta không đến mức đó.

=ROUND(MOD(A,B),10)

gameboy007
26-10-11, 08:06 AM
Đú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 (http://www.giaiphapexcel.com/forum/showpost.php?p=54560&postcount=32).

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é

ndu96081631
26-10-11, 08:49 AM
Hi các Pro làm gì trong Excel có cái hàm Quotient
Các pro xem lai nhé
Nó thuộc bộ hàm trong Add-In Analysis ToolPak đấy bạn à!
(menu Tools\Add-Ins, check mục Analysis ToolPak)

HYen17
26-10-11, 09:49 AM
Nó thuộc bộ hàm trong Add-In Analysis ToolPak đấy bạn à!
(menu Tools\Add-Ins, check mục Analysis ToolPak)

/(/ếu không thể cài cái ni vô trong excel nữa thì làm răng chừ? . . . .

ndu96081631
26-10-11, 09:51 AM
/(/ếu không thể cài cái ni vô trong excel nữa thì làm răng chừ? . . . .
Cài dễ mà sư phụ!
Còn không thì.. tìm hàm khác
Ẹc... Ẹc...

ptm0412
26-10-11, 11:23 AM
Cài dễ mà sư phụ!
Còn không thì.. tìm hàm khác
Ẹc... Ẹc...
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.

ndu96081631
26-10-11, 11:45 AM
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:

=INT(ABS(A1/B1))*SIGN(A1*B1)
Cũng không đến nỗi nào
Ẹc... Ẹc...

ptm0412
26-10-11, 12:10 PM
Ấy vậy mà kết quả Quotient lại có phân biệt -0 và +0
Và thử =(-0 = 0) = False.

ndu96081631
26-10-11, 12:17 PM
Ấ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ả

strytary
13-12-11, 05:38 PM
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ế?

nhok_pro39
21-02-13, 10:09 AM
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!

VetMini
21-02-13, 10:46 AM
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)

thanhhaf
02-07-14, 12:47 AM
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?

VetMini
02-07-14, 08:32 AM
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?

= -15
Đúng với định nghĩa hàm MOD của Excel : MOD(n, d) = n - d*INT(n/d) ;

Có chỗ nào sai hôn? xin cho biết.

thanhhaf
02-07-14, 10:15 PM
= -15
Đúng với định nghĩa hàm MOD của Excel : MOD(n, d) = n - d*INT(n/d) ;

Có chỗ nào sai hôn? xin cho biết.

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?

phihndhsp
02-07-14, 11:34 PM
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

VetMini
03-07-14, 09:28 AM
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?

thanhhaf
03-07-14, 10:06 AM
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ẻ!