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();
}
}
}
HAPPY -1 填空2 Java --- 十进制(带小数)转换为二进制
最新推荐文章于 2022-11-26 13:36:21 发布