您的位置:首页 > 职场人生

二进制小数

2016-12-18 20:37 246 查看

思路

要理解这道题,首先要知道什么样的小数可以转化为二进制形式,怎样的小数不能被转化为二进制形式,自己测试几组数据发现

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));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息