2016-05-06 42 views
1
int main(){ 
    int input; 
    int bin = 0, i = 1; 
    print("Please input a number"); 
    input = num.parse(stdin.readLineSync()); 
    while(input > 0) 
    { 
     bin = bin + (input % 2)*i; 
     input = input/2; 
     i = i * 10; 
    } 


    return 0; 
} 

它返回無限數字。將小數轉換爲二進制數字有錯誤

+0

司返回一個double,您所分配到一個int。你在用什麼編輯器?支持Dart的文本編輯器應該給你一個靜態類型警告。 –

+0

我正在使用Sublime Text 3 – Trafalgar

+0

您是否使用Dart包? https://packagecontrol.io/packages/Dart –

回答

4

你只需要採取的雙重呵護爲int的轉換:input = (input/2).floor()

看到這個工作代碼:

void main() { 
    int input; 
    int bin = 0, i = 1; 
    input = 5; 
    while(input > 0) 
    { 
     bin = bin + (input % 2)*i; 
     input = (input/2).floor(); 
     i = i * 10; 
    } 

    print(bin); 
} 
+2

由於'input'是一個int,所以這是一個很好的整數除法用例:'input〜/ = 2;'。不需要轉換。 – Ganymede

+0

另一種選擇是使用'input >> = 1;'來刪除最低位。 – lrn