99网
您的当前位置:首页位运算(7)—— 0~1之间浮点实数的二进制表示

位运算(7)—— 0~1之间浮点实数的二进制表示

来源:99网
题目

  给定一个介于0和1之间的实数,(如0.625),类型为double,打印它的二进制表示(0.101,因为小数点后的二进制分别表示0.5,0.25,0.125……)如果该数字无法精确的用32位以内的二进制表示,则打印“ERROR”。

分析

  这里用到的是小数化为二进制数,×2取整。

代码实现
public class _0601间浮点实数的二进制表示 {
	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) {
				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());
	}
}


运行结果

因篇幅问题不能全部显示,请点此查看更多更全内容