public static void main(String[] args) {
int dividend = 149567;// 被除数
int divisor = 4573;// 除数
int digit = 1000;// 小数点后的位数
List<Integer> arr = new ArrayList<>();// 保存小数点后位数的数组,用于判断是否余数循环
int[] array = new int[digit];// 保存余数,当后面出现的商相等,余数相等,说明出现循环
StringBuffer sb = new StringBuffer();
int trade = dividend / divisor;// 整出部分值
int remainder = dividend % divisor;// 余数部分
sb.append(trade).append(".");
for (int i = 0; i < digit; i++) {
remainder *= 10;
trade = remainder / divisor;
remainder %= divisor;
if (i != 0 && trade == arr.get(0) && remainder == array[0]) {// 如果不是从第一个开始循环将不满足条件
sb.append(arrToString(arr));
break;
}
// sb.append(trade);
arr.add(trade);
array[i] = remainder;
if (remainder == 0)
break;
}
if (arr.size() < digit)
sb.append("<").append(arrToString(arr)).append(">");// arr如果小于小数点后位数,说明有循环
else
sb.append(arrToString(arr));
System.out.println(sb.toString());
}
private static String arrToString(List<Integer> arr) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < arr.size(); i++) {
sb.append(arr.get(i));
}
return sb.toString();
}