Java算法–第一章–位运算符(7)0~1间浮点实数的二进制表示
题目:给定一个介于0和1之间的实数,(如0.625),类型为double,打印他的二进制表示(0.101,因为小数点后的二进制分别表示0.5,0.25,0.125……)。
如果该数字无法精确的用32位以内的二进制表示,则打印“ERROR”
代码:
package exer1;
public class 零一间浮点实数的二进制表示 {
public static void main(String[] args) {
double num = 0.625;
StringBuilder sb = new StringBuilder("0.");
while(num > 0){
//乘2
double r = num*2;
//判断整数部分
if(r>=1){
//追加1
sb.append("1");
//消掉整数部分
num = r-1;
}else{
sb.append("0");
num = r;
}
if(sb.length()>34){
System.out.println("ERROR ");
return;
}
}
System.out.println(sb.toString());
}
}
输出:
0.101
本文介绍了一种Java方法,用于将0到1之间的浮点数(如0.625)转换为其二进制表示。通过不断乘2并检查整数部分,构建出二进制小数部分。若超过32位仍无法精确表示,则输出“ERROR”。示例代码展示了如何实现这一过程,并成功输出了0.625的二进制表示0.101。
393

被折叠的 条评论
为什么被折叠?



