感谢大家放下。
我希望分割2个数字,并且我希望以完全准确的方式打印数字。
发生小数模式后,我想要一个逗号并指出重复模式的长度。
答案 0 :(得分:1)
你可以解决这个问题的一种方法就是通过做这样的长时间划分,你想要做的就是解决你的问题,就像你在一张纸上长时间划分一样。
static void codeCamperDivison(long n, long d) {
long r; // remainder
long g; // goes into
StringBuilder s = new StringBuilder();
ArrayList<Long> rh = new ArrayList<Long>(); // remainder history
ArrayList<Long> gh = new ArrayList<Long>(); // goes into history
for (long i = 0;; i++) {
r = n % d;
g = n / d;
s.append(g);
if (i == 0) // whole number portion
s.append(".");
if (r == 0) { // non-recurring number
s.append(0);
break;
}
gh.add(g);
if (rh.contains(r)) { // recurring pattern found
s.append(",");
List<Long> pattern = gh.subList(rh.lastIndexOf(r) + 1, gh.size());
for (long l : pattern)
s.append(l);
s.append("...");
if (pattern.size() == 1)
s.append("\nrecurring length=infinite");
else
s.append("\nrecurring length=" + pattern.size());
break;
}
rh.add(r);
n = r * 10; // add a 0 like in long division
}
System.out.println(s.toString()); // print results
}