正確に変換できる場合は 10 進数を単項から 2 進数に変換し、変換できない場合はエラー メッセージを返すコードを作成しています。以下は私のコードです。小数点以下のエラーについて混乱しています。1 つのステップでは、n before は 1.12、temp は 1 ですが、出力は 0.12001 です。この種のエラーを回避するにはどうすればよいですか?
list<bool> binary_decimal(double n, bool& flag){
list<bool> li;
list<double> left;
flag = true;
n = n - (int)n;
left.push_back(n);
while(n){
n = n * 2;
cout << "n before " << n << endl; //test area
li.push_back(n >= 1);
int temp = (int)n;
cout << "temp " << temp << endl; // test area
n = n - temp;
cout << "n now = " << n << endl; //test area
for(list<double>:: iterator it = left.begin(); it != left.end(); it++){
if(*it == n){
cout << "error!";
flag = false;
return li;
}
}
left.push_back(n);
}
return li;
}