代码是这样的,我不知道这段代码是要干什么?哪位高手帮我解释一下吗?
import java.util.*;
import java.io.*;
import java.math.*; public class Main_1131 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str, ors;
BigDecimal x, y, z;
while (in.hasNext()) {
ors = in.next();
str = ors.substring(ors.indexOf(".") + 1, ors.length());
z = new BigDecimal(0);
y = new BigDecimal(1);
for (int i = 0; i < str.length(); ++i) {
x = new BigDecimal(str.charAt(i) - '0');
y = y.multiply(new BigDecimal(8));
x = x.divide(y, str.length() * 3, RoundingMode.HALF_UP);
z = z.add(x);
}
System.out.println(ors + " [8] = " + z + " [10]");
}
}
}
import java.util.*;
import java.io.*;
import java.math.*; public class Main_1131 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str, ors;
BigDecimal x, y, z;
while (in.hasNext()) {
ors = in.next();
str = ors.substring(ors.indexOf(".") + 1, ors.length());
z = new BigDecimal(0);
y = new BigDecimal(1);
for (int i = 0; i < str.length(); ++i) {
x = new BigDecimal(str.charAt(i) - '0');
y = y.multiply(new BigDecimal(8));
x = x.divide(y, str.length() * 3, RoundingMode.HALF_UP);
z = z.add(x);
}
System.out.println(ors + " [8] = " + z + " [10]");
}
}
}
Scanner in = new Scanner(System.in);
ors = in.next(); 这两句用于获取控制台的输入BigDecimal表示一种大数据类型
其他的简单逻辑能看懂吧?
ors = in.next(); //读入
if(ors.equals("exit"))//最好加个退出条件
return;
str = ors.substring(ors.indexOf(".") + 1, ors.length()); //取小数部分
z = new BigDecimal(0);
y = new BigDecimal(1);
for (int i = 0; i < str.length(); ++i) {
x = new BigDecimal(str.charAt(i) - '0'); //获得该整数值
y = y.multiply(new BigDecimal(8));
x = x.divide(y, str.length() * 3, RoundingMode.HALF_UP); //返回精度为 str.length()*3的x/y
z = z.add(x);
System.out.println(x+" "+ y+" "+z+" ");
}
//大致是将 第n位小数与8^n相除,结果相加
System.out.println(ors + " [8] = " + z + " [10]");
y = y.multiply(new BigDecimal(8));
x = x.divide(y, str.length() * 3, RoundingMode.HALF_UP); //返回精度为 str.length()*3的x/y
z = z.add(x); 用大运算数 进行 了 乘 除 加的运来 然后得到相应的值