这里以1.005为例子,模拟二进制存储
1为整数位
package baseJava;
import java.math.BigDecimal;
import java.util.HashMap;
public class DoubleTest {
public static void main(String[] args) {
double decimalPart = 0.005;
String binaryStr = getBinaryStr(decimalPart);
System.out.println(binaryStr);
}
private static String getBinaryStr(double a) {
BigDecimal aa = new BigDecimal(a+"");
String returnStr = "";
HashMap<BigDecimal,String> map = new HashMap<>();
for(;aa.compareTo(BigDecimal.ZERO)!=0;) {
aa = aa.multiply(new BigDecimal("2"));
System.out.println(aa);
if(map.containsKey(aa)) {//key 相同说明已经开始循环
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
map.put(aa, "");
if(aa.compareTo(BigDecimal.ONE)>=0) {
returnStr = returnStr +"1";
aa = aa.subtract(BigDecimal.ONE);
}else {
returnStr = returnStr +"0";
}
Sys