![]() |
|
![]() |
#1 |
Đệ tử 1 túi
Tham gia ngày: Jun 2007
Bài gửi: 11
: |
![]() Bác nào giúp mình với. không biết trong CCS tính toán số thực như thế nào? mình có thể dùng cách ép kiểu như trong C được không?
VD: float a=2.78; int b; b=(int)(a*100); vậy b=278 có đúng không vậy các bác? kiểu int mặc định là 16 bit đúng vậy không các bác? cám ơn các bác nhiều. |
![]() |
![]() |
![]() |
#2 |
Trưởng lão PIC bang
|
Theo tài liệu hướng dẫn sử dụng của CCS C, số thực (float) được hỗ trợ đầy đủ, do đó bạn có thể thực hiện việc chuyển kiểu (casting) theo ý muốn (mặc dù trình biên dịch tự động chuyển kiểu).
Cũng theo tài liệu trên, int mặc định là int8 (số nguyên 8-bit). Bạn nên dùng int16 hay long nếu muốn chắc chắn dữ liệu có độ dài 16-bit. Tôi có 2 đề nghị với bạn: 1. Download tài liệu hướng dẫn sử dụng của CCS C ở link http://www.ccsinfo.com/downloads/CReferenceManual.pdf 2. Viết thử đoạn chương trình của bạn, thêm vào các lệnh xuất dữ liệu (ra cổng RS232 để hiển thị trên một PC chẳng hạn), rồi biên dịch bằng CCS C, sau đó chạy thử chương trình xem kết quả ra sao. Một khi bạn đã đầu tư cho việc học CCS C, tôi tạm giả thiết là bạn đã có phần cứng để thử nghiệm. Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
![]() |
![]() |
![]() |
#3 |
Đệ tử 4 túi
Tham gia ngày: Mar 2006
Bài gửi: 83
: |
Chào bạn
Theo mình thấy cách ép kiểu như vậy là đúng đó bạn. Nhưng đoạn code có vấn đề vì 278 lớn hơn kiểu định dạng int chỉ có 255 thôi |
![]() |
![]() |
![]() |
#4 |
Đệ tử 1 túi
Tham gia ngày: Jun 2007
Bài gửi: 11
: |
ah, mình phát hiện ra rồi. chỉ có kiểu int có độ dài 4 byte (bằng với kiểu float) mới đúng. Có nghĩa là để ép thành kiểu int từ kiểu float thì ta dùng kiểu ép là int32.
float a=2.78; int32 b; b=(int32)(a*100); |
![]() |
![]() |
![]() |
#5 |
Đệ tử 1 túi
Tham gia ngày: Jun 2007
Bài gửi: 11
: |
thanks các bác nhiều nha !
|
![]() |
![]() |
![]() |
|
|