1.トピックの紹介
バイナリ番号を文字列に変換します。0から1までの実数(0.72など)が与えられると、型はdoubleであり、そのバイナリ式を出力します。数値が0から1の間でない場合、または32ビット以内のバイナリで正確に表現できない場合は、「ERROR」が出力されます。
例1:
入力:0.625
出力: "0.101"
例2:
入力:0.1
出力:「エラー」
プロンプト:0.1はバイナリで正確に表すことができません
プロンプト:
32ビットには、出力の2ビット「0.」が含まれます。
出典:LeetCode(LeetCode)
リンク:https ://leetcode-cn.com/problems/bianry-number-to-string-lcci
著作権はLeetCodeが所有しています。商用の再版については、公式の承認に連絡してください。非商用の再版については、出典を示してください。
2つの問題解決のアイデア
この質問を検討するために、「2を掛けて切り上げる」方法を使用して、10進数を2進数に変換します。詳細については、コードを参照してください。
3つの問題解決コード
class Solution {
public:
string printBin(double num) {
if(num > 1 || num < 0)
return "ERROR";
string res = "0.";
while(num > 0)
{
num *= 2; //小数部分不断乘2
if(num >= 1) //取出整数部分,添加到二进制小数的后边
{
res += "1";
num--; //更新十进制小数
}
else
res += "0";
if(res.size() > 32)
return "ERROR";
}
return res;
}
};