-
04-05-2009, 02:42 AM #1Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Kết quả tính toán sai ở chỗ nào? (Vui vui)
nhờ các bác chỉ dùm lỗi trong Function này(hoặc cách test) hộ em với:
Function TrungBinhCong(ByVal so1, ByVal so2, ByVal so3)
TrungBinhCong = (so1 + so2 + so3)/ 3
End Function
Để test cái Function trên em dùng:
Sub TrungBinh()
Dim so1, so2, so3 As Integer
Dim Tong As integer
so1 = InputBox("nhập số thứ nhất: ")
so2 = InputBox("Nhập số thứ hai: ")
so3 = InputBox("Nhập số thứ ba: ")
Tong = so1 + so2 + so3
MsgBox "Số thứ nhất là:" & so1
MsgBox "Số thứ hai là:" & so2
MsgBox "Số thứ ba là:" & so3
MsgBox "Tổng cộng là: " & Tong
MsgBox "Trung bình cộng các số: " & TrungBinhCong(so1, so2, so3)
End Sub
các bác thử chạy hộ cái Sub trên xem, tại sao lại không ra kết quả mong muốn??. Ví dụ, khi ta nhập so1=20; so2=30; so3=40 thì kết quả được sẽ là:Tổng cộng 2070; Trung bình cộng 690 ?????:k5211829:View more random threads:
- Một số câu hỏi trắc nghiệm về VBA trong access
- dữ liệu ngày trả về quý
- Giúp mình bắt lỗi khi người dùng nhấn Alt + F4
- combo box ở access ???
- Menu trong Access 2007
- Kết nối với máy chấm công
- Hỏi query Xuất Nhập Tồn
- Xin code xử lý dữ liệu
- Hỏi xuất dữ liệu Access sang Excel để in!
- Thay đổi dữ liệu 1 textbox khi 1 textbox thay đổi?
-
04-05-2009, 02:59 AM #2Junior Member
- Ngày tham gia
- Dec 2015
- Bài viết
- 0
Gửi bởi khanhminh06
Sửa lại chút:
Sub TrungBinh()
Dim so1, so2, so3
Dim Tong As Long
so1 = InputBox("nhập số thứ nhất: ")
so2 = InputBox("Nhập số thứ hai: ")
so3 = InputBox("Nhập số thứ ba: ")
Tong = CInt(so1) + CInt(so2) + CInt(so3)
MsgBox "Số thứ nhất là:" & so1
MsgBox "Số thứ hai là:" & so2
MsgBox "Số thứ ba là:" & so3
MsgBox "Tổng cộng là: " & Tong
MsgBox "Trung bình cộng các số: " & TrungBinhCong(CInt(so1), CInt(so2), CInt(so3))
End Sub
Ghi chú: không cần test, chỉ cần coi lôgic là biết nó bị chỗ nào rồi.
-
04-05-2009, 02:59 AM #3Silver member
- Ngày tham gia
- Mar 2016
- Bài viết
- 15
Gửi bởi khanhminh06
nếu cái Function sửa thành:
[I]Function TrungBinhCong(Byval so1, ByVal so2, ByVal so3)
so1=so1+0
TrungBinhCong:k6233143:
Ngược lại nếu ta sửa cái "Sub" lại thế này và test thì OK:
Sub TrungBinh()
Dim so1, so2, so3 As Integer
Dim Tong As Double
so1 = InputBox("Nhập số thứ nhất: ") 'ở đây vẫn nhập giá trị so1=20
so2 = 30
so3 = 40
Tong = so1 + so2 + so3
MsgBox "Số thứ nhất là:" & so1
MsgBox "Số thứ hai là:" & so2
MsgBox "Số thứ ba là:" & so3
MsgBox "Tổng cộng: " & Tong 'kết quả được Tổng = 90
MsgBox "Trung bình cộng: " & TrungBinhCong(so1, so2, so3) 'Kết quả Trung bình là 30
End Sub
Tại sao nhỉ? khó hiểu quá!!!
-----------------------------------------------------------------------------------------
xin bác chỉ dzùm em với?
-----------------------------------------------------------------------------------------
Gửi bởi phatnq2002
-
04-05-2009, 03:07 AM #4Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Kết quả tính toán sai ở chỗ nào? (Vui vui)
Nhìn chung, bạn gặp phải trường hợp:
- Khai báo biến không tường minh: Trong tình huống này biến sẽ có kiểu là Variant. Khi tính toán, kiểu sẽ được thay đổi theo hướng được cho là thích hợp nhất. Đây là thói quen "xấu" của lập trình viên. Bạnne6n khai báo biến theo kiểu tường minh, vừa dễ kiểm soát, vừa biết giá trị trả về là gì.
- Khai báo không hợp kiểu: Biến kiểu kết quả thường có kiểu "cao" hơn các thành tố. Trong trường hợp bất khả kháng thì phải ép kiểu với: CInt, CLng, CDbl, CStr, ...
-
04-05-2009, 04:34 AM #5Junior Member
- Ngày tham gia
- Nov 2015
- Bài viết
- 7
Ðề: Kết quả tính toán sai ở chỗ nào? (Vui vui)
Cảm ơn bác em đã hiểu rồi!
Pallet nhựa Tân Bình giao hàng nhanh chóng Pallet nhựa Tân Bình là một trong những lựa chọn hàng đầu cho việc vận chuyển và lưu trữ hàng hóa trong các doanh nghiệp và kho bãi. Với chất lượng đảm bảo...
Pallet nhựa Tân Bình giao hàng nhanh chóng