java - 高效的 BigDecimal 上下舍入到两位小数

标签 java rounding bigdecimal

在 Java 中,我试图找到一种有效的方法来根据条件将 BigDecimal 舍入为两位小数,向上或向下。

 IF condition true then:
    12.390 ---> 12.39
    12.391 ---> 12.40
    12.395 ---> 12.40
    12.399 ---> 12.40

 If condition false then:
    12.390 ---> 12.39
    12.391 ---> 12.39
    12.395 ---> 12.39
    12.399 ---> 12.39

完成此任务的最有效方法是什么?

最佳答案

public static BigDecimal round(BigDecimal d, int scale, boolean roundUp) {
  int mode = (roundUp) ? BigDecimal.ROUND_UP : BigDecimal.ROUND_DOWN;
  return d.setScale(scale, mode);
}
round(new BigDecimal("12.390"), 2, true); // => 12.39
round(new BigDecimal("12.391"), 2, true); // => 12.40
round(new BigDecimal("12.391"), 2, false); // => 12.39
round(new BigDecimal("12.399"), 2, false); // => 12.39

关于java - 高效的 BigDecimal 上下舍入到两位小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5681868/

相关文章:

java - Java 中 String.format() 中的条件字符串

java - 将数据从 JSP 动态地从 HTML 页面传递到 Servlet

javascript - 使用 JavaScript 舍入表单中的用户输入

java - 如何在界面中声明列表(并向列表添加内容)

故障转移场景中的 DNS 循环请求非常慢

c++ - 计算范围内的值时出现舍入误差

java - 如何打印格式化的 BigDecimal 值?

java - BigDecimal 方法发送格式化数字

java - Java 中的大数比较

java - 安排在轮询情况下可能超时的可调用对象的最佳方法是什么?