您的位置:首页 > 移动开发

HAPPY -1 填空2 Java --- 十进制(带小数)转换为二进制

2018-02-24 20:00 302 查看
public class decimalToBinary{
public static String decimal2Binary(double value) throws Exception {
// 通过强制类型转换得到整数部分的值
int in = (int) value;
System.out.println("The integer is: " + in);
// 得到小数部分的值
double r = value - in;
System.out.println("The decimal number is: " + r);

StringBuilder stringBuilder = new StringBuilder();
// 将整数部分转化为二进制
int remainder = 0;//余数初始化为0
int quotient = 0;//商初始化为0
while (in != 0) {//如果整数部分不为0
// 得商
quotient = in / 2;
// 得余数
remainder = in % 2;
stringBuilder.append(remainder);
in = quotient;//将整数部分变为商
}
stringBuilder.reverse();//将字符串反转
stringBuilder.append(".");//加上小数点

// 将小数部分转化为二进制
int count = 32; // 限制小数部分位数最多为32位,如果超过32为则抛出异常
double num = 0;
while (r > 0.0000000001) {
count--;
if (count == 0) {
throw new Exception("Cannot change the decimal number to binary!");
}
num = r * 2;
if (num >= 1) {
stringBuilder.append(1);
r = num - 1;
} else {
stringBuilder.append(0);
r = num;
}
}

return stringBuilder.toString();
}
public static void main(String[] args) {
try {
String s = decimal2Binary(19.71875);
System.out.println("The result is: " + s);
} catch (Exception e) {
e.printStackTrace();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: