PDA

View Full Version : giải thuật chuyển số dạng float về một chuỗi


nickyshadow
19-08-2012, 01:29 AM
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à
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
*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
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à
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
*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.
float f=123.456;
printf("F = '%g\n'",f); //the là ta truyền thông qua RS232 là: F = '123.456'
hoặc
printf("F = '%9g\n'",f); //the là ta được F = ' 123.456'