PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   RTOS và Thuật toán với PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=33)
-   -   giải thuật chuyển số dạng float về một chuỗi (http://www.picvietnam.com/forum/showthread.php?t=30230)

nickyshadow 19-08-2012 01:29 AM

giải thuật chuyển số dạng float về một chuỗi
 
mình đang làm project về adc, về phần đọc mức giá trị thì ok rồi, nhưng phần hiển thị giá trị mình cần một hàm convert từ float qua dạng chuỗi

mình đã thử dùng hàm sprintf trong thư viện chuẩn, nhưng mình thấy nó tốn quá nhiều bộ nhớ chương trình, mình test thử khi có hàm sprintf và khi không có thì nó chênh lệch nhau tới 19KB, mong các bác giúp mình một chương trình con dạng sau:

chuyển từ float sang chuỗi, tham số truyền vào là một số float, số chữ số trước dấu . và số chữ số sau dấu .

Ví dụ em có một con số là
Code:

float x=123.4567;
thì khi đưa vào hàm xử lý nó với yêu cầu là 5 chữ số trước dấu, và 2 chữ số sau dấu phẩy sẽ ra dạng
Code:

*result="  123.45";// lưu ý 2 dấu space bar ở trước số 1, tức là nếu ko đủ thì sẽ điền space bar vào

ptptyl 24-08-2012 05:42 PM

Bác tự viết xem thế nào, sai gì thì post lên anh em chỉnh sửa giúp. Bác nhờ help kiểu này thì 100% không ai rảnh làm dùm bác hết.
Mấy cái giải thuật nay thì trên mạng cũng có nhiều rồi, lúc trước tui cũng mò mẵm cái này, lên mạng lấy về, chỉnh sửa tí là ra thôi.

tducquan 11-12-2012 09:59 AM

Trích:

Nguyên văn bởi nickyshadow (Post 77261)
mình đang làm project về adc, về phần đọc mức giá trị thì ok rồi, nhưng phần hiển thị giá trị mình cần một hàm convert từ float qua dạng chuỗi

mình đã thử dùng hàm sprintf trong thư viện chuẩn, nhưng mình thấy nó tốn quá nhiều bộ nhớ chương trình, mình test thử khi có hàm sprintf và khi không có thì nó chênh lệch nhau tới 19KB, mong các bác giúp mình một chương trình con dạng sau:

chuyển từ float sang chuỗi, tham số truyền vào là một số float, số chữ số trước dấu . và số chữ số sau dấu .

Ví dụ em có một con số là
Code:

float x=123.4567;
thì khi đưa vào hàm xử lý nó với yêu cầu là 5 chữ số trước dấu, và 2 chữ số sau dấu phẩy sẽ ra dạng
Code:

*result="  123.45";// lưu ý 2 dấu space bar ở trước số 1, tức là nếu ko đủ thì sẽ điền space bar vào

trong một số chương trình như CCS có hỗ trợ sẵn việc này.
Code:

float f=123.456;
printf("F = '%g\n'",f); //the là ta truyền thông qua RS232 là: F = '123.456'

hoặc
Code:

printf("F = '%9g\n'",f); //the là ta được F = '  123.456'


Múi giờ GMT. Hiện tại là 11:27 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam