30/09/2018, 18:48

Chuyển đổi kiểu số thực(float) sang kiểu chuỗi(char)?

đây là code của mình, nhưng làm mãi nó vẫn sai. Mong mọi người thảo luận và giải đáp

#include <iostream>
 #include <cstring>
 using namespace std;
 main()
 {
float number;
int extra, c = 0, i = 0, count = 0;
cout << "Enter number: "; 
cin >> number; //So can chuyen doi
while(number != int(number))
{
	number = number*10;
	c++;
         } // * lan luot len de thanh mot so nguyen
       cout << "C = " << c << endl;
        extra = number; //gan cho so nguyen de doi thanh chuoi de hon
         cout << "Extra = " << extra << endl;
 char *temp = new char[30];
 char *result = new char[30];
 while(extra > 0) // gan tung phan tu chia duoc vao mang
    {
	temp[i++] = extra % 10 + '0';
	extra = extra / 10;
   }
   for(int j = i - 1; j >= 0; j--) // in ra mang theo dung thu tu
    {
	if(count == c)
	{
		result[count++] = '.'; // gan ky tu '.'
 	}
	else
	result[count++] = temp[j];
  }
   	result[count + 1] = '';
      cout << "
Kq = " << result << endl;
        }
Tuan Tran Duong viết 20:57 ngày 30/09/2018
while(extra > 0) // gan tung phan tu chia duoc vao mang
{
temp[i++] = extra % 10 + '0';
extra = extra / 10;
}
temp[i] = '\0';
for(int j=i-1; j>=0; j--) // in ra mang theo dung thu tu
  {
     if(count == strlen(temp)-c)
	{
		result[count++] = '.'; // gan ky tu '.'
		result[count++] = temp[j];
	 }
	else
		result[count++] = temp[j];
  }
  result[count] = '\0';

Đau cái là mình chuyển các số như 55.696 là không được ác. thế vì khi nhập vô là nó thành 55.695999991 hít. Nếu bạn dùng kiểu double cho number thì không bị như thế vì độ chinh xác cao hơn. HIHI.

Minh Vương viết 20:52 ngày 30/09/2018

ok thanks bạn rất nhiều

Bài liên quan
0