Mình đã khắc phục được lỗi này rồi chỉ cần sửa lại lệnh :
temp1=(xau_ep[i]-48)/temp; thành
temp1=(float)(xau_ep[i]-48)/temp; là ok!.
Các bạn giúp mình với mình có một xâu(0.123456) nhập từ bàn phím mình muốn chuyển sang kiểu số dạng float (0.12345) mình đã làm đủ mọi cách rồi chịu thôi. Mong các bạn giúp mình với.
Cách mà mình đã làm đó là :
Mã :
Code:char xau_ep[20]; float ep; int dodai; cprintf("\n Nhap day so vao : "); fflush(stdin); gets(xau_ep); dodai=strlen(xau_ep); long int temp=10; float temp1; ep=0; for (int i=2; i<dodai;i++) { temp1=(xau_ep[i]-48)/temp; ep=ep+temp1; temp=temp*10; }
Mình không hiểu tại sao temp1 của mình nó luôn là 0.0?
Đức Thuận
Mình đã khắc phục được lỗi này rồi chỉ cần sửa lại lệnh :
temp1=(xau_ep[i]-48)/temp; thành
temp1=(float)(xau_ep[i]-48)/temp; là ok!.
Đức Thuận
Cách của bạn vẫn sai, bạn thử nhập số nguyên vào rồi kt lại nhé.
làm như vậy sao đc nó chỉ đúng với các số thuộc dạng 0.00000 thôi.temp1=(float)(xau_ep[i]-48)/temp;
Bài này tôi thấy bạn nên sửa thêm như sau. Dùng dấu chấm "." tách phần nguyên và phần thập phân là danh giới. Trước khi đến dấu chấm thì là phần nguyên bạn phải nhần nó với temp tướng ứng, rồi phần âm thì làm như bạn.
Để bài hay hơn, bạn nên đặt điều kiện để người nhâp không nhâp chuỗi không phải số.
Đã được chỉnh sửa lần cuối bởi QuangHoang : 18-05-2008 lúc 08:25 AM.