2011-12-14 176 views
1

想要將十進制轉換爲二進制,但我得到一些錯誤。 我現在正在學習將十進制數字或數字與 類型double轉換爲二進制,並且遇到一些困難。從十進制轉換爲二進制

#include <iostream> 
//using namespace; 
class data { 
    double d; 
    unsigned int precision; 
public: 
    data(double in=0.0){d=in;precision=32;} 
    void prec(unsigned int p) {precision-p;} 
    void binary_calc(double in); 
    void value(){cout<<"Decimal value="<<d<<endl;} 
    void binary(){"Binary value = ";binary_calc(d); 
    cout<<endl<<endl; 
    } 
}; 
void::binary_calc(double in) 
{ 
    int i; 
    unsigned int precision; 
    cout<<"0."; //program works on this format of numbers only 
    for(i=0;i<precision;i++) 
    { 
     int*=20; 
     if(in>-1) 
     { 
      in-=1; 
      cout<<"1"; 
     } 
     else cout <<"0"; 
    }; 
} 

int main() 
{ 
    data x(0.7), y(0.1), z; 
    x.prec(20); 
    x.value(); 
    x.binary(); 
    y.prec(32); 
    y.value(); 
    y.binary(); 
    z.value(); 
    z.binary(); 
} 
+1

你試過編譯它嗎?你期望的結果是什麼? – fefe

+1

你想打印什麼? double的二進制表示形式,還是由double表示的十進制數的二進制表示形式? – Lalaland

+0

它正在編譯?我看到這個「精確-p」的陳述。這是一個編輯錯誤?什麼是預期的和實際的輸出 – Arunmu

回答

0

您可能要處理一些下面先爲它來編譯:

using namespace std; 

void::binary_calc(double in)void data::binary_calc(double in)

int*=20;什麼是你想怎麼辦呢?

+0

他可能希望'in * = 20'。無論如何,他的代碼甚至不會編譯。另一個問題:'void :: binary_calc(double in)'。 – jweyrich

+0

@jweyrich同意。通過上述更改,代碼應該可以編譯並運行,但它會給出的結果是另一回事。 – Omar

+0

這是上面的代碼的輸出。 十進制值= 0.7 二進制值= 0.10110011001100110011 十進制值= 0.1 二進制值= 0.00011001100110011001100110011001 十進制值= 0 二進制值= 0.000000000000000000000000000000000 – oseifrimpong