直接上代码,步骤都在注释里,有问题欢迎留言
public class FloatInBinary {
public static void main(String[] args) {
double num=0.3;//0.3无法用32位的二进制数精确表示
double num2=0.625;
StringBuilder str=new StringBuilder("0.");
/*思路:乘二挪整
* 乘二:直到数字为0为止
* 整:如果整数部分有1则保留
* 挪:整数部分归零
* */
while(num>0)
{
double r=num*2;
//判断整数部分
if(r>=1)
{
str.append("1");
//消掉整数部分
num=r-1;
}
else {
str.append("0");
num=r;
}
if(str.length()>34)
{
System.out.println("ERROR");
return;
}
}
System.out.println(str.toString());
}
}