代码是这样的,我不知道这段代码是要干什么?哪位高手帮我解释一下吗?
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]"); 


}

解决方案 »

  1.   


     Scanner in = new Scanner(System.in); 
    ors = in.next(); 这两句用于获取控制台的输入BigDecimal表示一种大数据类型
    其他的简单逻辑能看懂吧?
      

  2.   

     while (in.hasNext()) { 
                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]"); 
      

  3.   

     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);  用大运算数 进行 了 乘 除 加的运来 然后得到相应的值