我有一个数学问题。我有一个非理性的BigDecimal,我想要完善但是我想在之后它开始重复自己,如果这是有道理的。所以,例如,如果我有
0.76489512147147147147147147147147
我希望它能够转到
0.76489512147
其余的只是147经常发生。
是否有Java功能可以执行此操作?或者我需要实现某种算法?
由于
答案 0 :(得分:1)
答案 1 :(得分:1)
通过将输出视为字符串并应用一些正则表达式功夫来轻松解决问题:
// Replace the smallest repeating trailing group with 1 copy of itself
String truncated = a.replaceAll("(.+?)(?=\\1+$).*", "$1");
这是一些测试代码:
BigDecimal bd = new BigDecimal("0.76489512147147147147147147147147");
String s = bd.toString();
// Replace the smallest repeating trailing group with 1 copy of itself
String truncated = s.replaceAll("(.+?)(?=\\1+$).*", "$1");
System.out.println(truncated);
输出:
0.76489512147