二进制小数
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)); } }