怎样求两个整数相除得到的无限循环小数,(有限小数直接输出) 如 1,7 输出 0.[142857]
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/24 04:01:45
怎样求两个整数相除得到的无限循环小数,(有限小数直接输出) 如 1,7 输出 0.[142857]
怎样求两个整数相除得到的无限循环小数,(有限小数直接输出) 如 1,7 输出 0.[142857]
怎样求两个整数相除得到的无限循环小数,(有限小数直接输出) 如 1,7 输出 0.[142857]
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
ArrayList< Integer >info = new ArrayList< Integer >();//存储被除数和余数
ArrayList< Integer >result = new ArrayList< Integer >();//存储得到的序列
int a = reader.nextInt();
int b = reader.nextInt();
int deved = a;
int dev = b;
if(deved < dev){
deved *= 10;
}
boolean isLim = false;//是否是无限循环小数
int set = 0;//记录循环小数的循环块开始的位数
while(deved != 0){
if(-1 != (set=info.indexOf(deved))){
isLim = true;
break;
}
else{
info.add(deved);
result.add(deved/dev);
deved = (deved%dev)*10;
}
}
//开始输出
//输出小数点之前的部分
int startX;
if(a < b){
startX = 0;
System.out.print("0.");
}
else{
startX = 1;
System.out.print(result.get(0)+".");
}
if(!isLim){//如果不是无限小数直接依次输出
for(int i=startX; i < result.size(); i ++){
System.out.print(result.get(i));
}
}
else{//循环小数从第set位开始是循环位
int i = startX;
while(i