当前位置: 首页 > 面试题库 >

有效的BigDecimal舍入到小数点后两位

周宸
2023-03-14
问题内容

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

 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


 类似资料:
  • 我如何四舍五入到两个小数位?

  • 我试图将大的十进制值四舍五入到小数点后两位。 我正在使用 但它并没有始终如一地满足我的要求: 我不在乎有效数字,我只想要小数点后两位。我如何使用BigDecimal做到这一点?或者还有其他类/库更适合这个?

  • 我想把54.5345四舍五入到54.54,也就是说,如果我有第三个小数位,那么我想在第二个小数位上加1。 我试过用math.round但如果第三小数小于5,它总是四舍五入

  • 问题内容: 如果值为,则应将其格式化为。如果是,那么应该是。 问题答案: 这是一个实用程序,可以将双精度舍入(而不是截断)双精度至小数位数。 例如: 原始版本;提防这个 这在小数位数很高(例如)或整数部分很大(例如)的极端情况下会严重崩溃。感谢Sloin指出这一点。 多年来,我一直在使用上面的方法将“不太大”的双精度取整到2或3个小数位(例如,以秒为单位的清理时间用于记录目的:27.9876543

  • 我需要将PHP中的一个小数点舍入为两位小数,以便: 变成。。。 我尝试了数字_格式,但这只是将值舍入到49.96。我不能使用substr,因为数字可能更小(如7.950)。到目前为止,我还没有找到这个问题的答案。 非常感谢您的帮助。

  • 我需要把分钟换算成小时,四舍五入到小数点后两位。我还需要在小数点后显示最多两个数字。所以如果我有650分钟,那么小时应该是10.83。 但在这种情况下,如果我的分钟数是630小时,那就是10.5000000。但我只想要10.50(四舍五入后)。我如何做到这一点?