-
04-05-2009, 02:42 AM #1
Junior 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:
- Giúp đở vấn đề share csdl access để được nhiều người dùng
- xin hỏi cách tìm record giống nhau giữa hai table
- Lưu contact trên access vào Outlook và ngược lại
- TIP: Kiểm tra dung lượng file Access .
- Xuân Thanh cho mình hỏi tí!
- tìm kiếm qua các điều kiện chọn textbox
- Giúp em tạo Form và Form bằng VBA
- Lập trình bảo mật cơ sở dữ liệu Access
- Thêm dòng trắng cho Report đẹp hơn
- Căn bản về kết nối với dữ liệu SQL Server từ MS. Access
-
04-05-2009, 02:59 AM #2
Junior 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 #3
Silver 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 #4
Junior 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 #5
Junior 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!
Với lượng villa phân bổ rộng khắp tại các vị trí đắc địa nhất của Đà Nẵng và Hội An, Booking Villa tự tin có thể đáp ứng mọi nhu cầu về vị trí địa lý của khách hàng. Bạn có thể lựa chọn villa gần...
Villa phong cách Địa Trung Hải giữa lòng Đà Nẵng