大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
小数表示原理
你了解小数的表示原理吗?
我的十进制小数换成二进制该如何表示?
比如:0.3 的二进制表示为:0.0100110011001….
(小数乘以2,取整,小数部分继续乘以2,取整,得到小数部分0为止,将整数顺序排列。
0.8125×2=1.625 取整1,小数部分是0.625
0.625×2=1.25 取整1,小数部分是0.25
0.25×2=0.5 取整0,小数部分是0.5
0.5×2=1.0 取整1,小数部分是0,结束
所以0.8125的二进制是0.1101)
import java.math.BigDecimal;
import java.util.Scanner;
public class H4 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
BigDecimal num = BigDecimal.valueOf(Double.parseDouble(input));
String output="";
trans(num,output);
}
public static void trans(BigDecimal num,String output) {
num = num.multiply(BigDecimal.valueOf(2));
String tmp = num.toString().substring(0, 1);//取小数点前一位
output +=tmp;
num=num.subtract(BigDecimal.valueOf(Double.parseDouble(tmp)));
if(num.compareTo(BigDecimal.ZERO)==0||output.length()==10) {//如果num=0或者小数点后有10位就停止递归
System.out.println("0."+output);
return;
}
trans(num,output);
}
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/189801.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...