思路
要理解这道题,首先要知道什么样的小数可以转化为二进制形式,怎样的小数不能被转化为二进制形式,自己测试几组数据发现
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 {
public String printBin(double num) {
// write code here
if (num > 1 || num < 0) {
return "Error";
}
StringBuilder sb = new StringBuilder();
sb.append("0.");
int i = 0;
for (; i < 32 && (num != 0); i++) {
num *= 2;
if (num >= 1) {
num -= 1;
sb.append('1');
} else {
sb.append('0');
}
}
if(i == 32){
return "Error";
} else {
return sb.toString();
}
}
public static void main(String[] args) {
System.out.println(new Solution().printBin(0.625));
}
}