作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一道数学题。我有一个无理数 BigDecimal,我想对其进行四舍五入,但是我想在它开始重复之后对其进行四舍五入(如果有意义的话)。例如,如果我有
0.76489512147147147147147147147147
我希望它四舍五入到
0.76489512147
因为其余的只是 147 次重复出现。
有 Java 功能可以做到这一点吗?或者我需要实现某种算法吗?
谢谢
最佳答案
通过将输出视为字符串并应用一些正则表达式功夫,可以轻松解决该问题:
// 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
关于java - 正确舍入非终止(无理数)BigDecimal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16204775/
我有一道数学题。我有一个无理数 BigDecimal,我想对其进行四舍五入,但是我想在它开始重复之后对其进行四舍五入(如果有意义的话)。例如,如果我有 0.7648951214714714714714
我是一名优秀的程序员,十分优秀!