要理解這道題,首先要知道什麼樣的小數可以轉化為二進位制形式,怎樣的小數不能被轉化為二進位制形式,自己測試幾組資料發現
1.可以轉化為二進位制的小數在有限次的乘二之後,小數部分會變零。舉個例子:
0.625
*2=1.25
1.25
*2=2.5
2.5*2=5.0(5.0的小數部分變成了 0)
2.不能轉化為二進位制的小數在有限詞的乘二之後,小數部分會出現迴圈,因此它永遠也不能轉化為二進位制的小數。
例子自己嘗試。
package 二進位制小數;
/** * created by h on 16-12-18.
*/public
class
solution
stringbuilder sb = new stringbuilder();
int i = 0;
for (; i < 32 && (num != 0); i++) else
}if(i == 32) else
}public
static
void
main(string args)
}
小數 二進位制
首先,給出乙個任意實數,整數部分用普通的二進位制便可以表示,這裡只說小數部分如何表示 例如0.6 文字描述該過程如下 將該數字乘以2,取出整數部分作為二進位制表示的第1位 然後再將小數部分乘以2,將得到的整數部分作為二進位制表示的第2位 以此類推,知道小數部分為0。特殊情況 小數部分出現迴圈,無法停...
二進位制小數
題目描述 有乙個介於0和1之間的實數,型別為double,返回它的二進位制表示。如果該數字無法精確地用32位以內的二進位制表示,返回 error 給定乙個double num,表示0到1的實數,請返回乙個string,代表該數的二進位制表示或者 error 測試樣例 0.625 返回 0.101 c...
十進位制小數轉為二進位制小數
整數和小數分別轉換.整數除以2,商繼續除以2,得到0為止,將餘數逆序排列.22 2 11 餘 0 11 2 5 餘 1 5 2 2 餘 1 2 2 1 餘 0 1 2 0 餘 1 所以22的二進位制是10110 小數乘以2,取整,小數部分繼續乘以2,取整,得到小數部分0為止,將整數順序排列.0.81...