PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT PIC,...)

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 17-05-2012, 08:14 PM   #1
levuphuong
Đệ tử 1 túi
 
Tham gia ngày: Jul 2011
Bài gửi: 25
:
[Hỏi] dấu chấm động trên CCS

Hiện mình đang làm máy tính bỏ túi với 16f887
phần tính toán số nguyên gần như đã xong nhưng phần thập phân còn bị tí lỗi
vd như mình nhâp 0.075 thì nó ra là 0.07499999
Để mình gửi các bạn file ccs,protue và 1 file mình đã chuyển qua c++ trên máy tính (mình đính kèm bên dưới đó). mình đã lượt bỏ chỉ còn phần hiện thị cho đỡ rối.code cũng như c++ bên dưới ah.
Mình thấy protus nó sample chạy xuất kết quả ra ko bị lỗi trên nhưng khi build thủ file c của nó thì lại không đúng chắc file .d39 cho protus ko liên quan tới mấy file c quá
Code bên dưới mình muốn tách chữ số thap phần ra từng phần tử lưu vào mảng rồi xuất ra
Code:
#include <iostream.h>
#include<math.h>
void calc_display(char *buf)
{
for(int i=0;buf[i]!=0;i++)
{
	cout<<endl<<buf[i] ;
}
}
void calc_format (float f)
 { 
 char buf [10+1];
   float divisor = 100000000;
  float digit;
  int pad=0, p=0;
  f=(floor(f* 100000+0.5))/100000 ;   ///DÒNG NÀY CÓ THỂ BỎ,MÌNH MUỐN 
                                                          //làm tron 5 chữ số nhưng ko dc

   // Sort out minus sign:   
   if (f >= 0)
      buf[p++] = ' ';
   else
    { buf[p++] = '-';
      f = -f;
    }

   if (f >= divisor)
      buf[p++] = 'E';
   else
      while (p < 10&& (divisor > 1 || f >= 0.0000001))
       { divisor /= 10;
         digit = floor(f/divisor);
         if (divisor < 1 && divisor > 0.01)
            buf[p++] = '.';
         if (digit != 0 || divisor < 10)
          { buf[p++] = digit + '0';
            pad = 1;        
          }
         else if (pad)
            buf[p++] = '0';
         f -= digit*divisor;
       }
   buf[p] = 0;           
   calc_display(buf);
 }
 int main()
 {
 	float x=0.75 ;   ////////Mọi người thay đổi giátrị này để test giúp mình nha
 calc_format(x)	;
 	
 }
File Kèm Theo
File Type: rar 16f877 calculator.rar (85.3 KB, 3 lần tải)
levuphuong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


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


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam