解法一
从0.5开始每次除以2,根据大小判断该位填0或者1。
测试点中出现了负数,和给出的数据范围不符,有问题。
另外评论区中有人指出非5结尾的小数运行程序后也可以正常转换,而实际上精度有缺失,这个跟double本身的存储有关。
class Solution {public String printBin(double num) {if ((num < 0) || (num > 1)) {return "ERROR";}double x = 0.5;StringBuilder strBuilder = new StringBuilder("0.");while ((strBuilder.length() < 32) && (num > 0.0)) {if (num >= x) {strBuilder.append('1');num -= x;} else {strBuilder.append('0');}x = x / 2;}if ((strBuilder.length() == 32) && (num > 0.0)) {return "ERROR";}return strBuilder.toString();}}
