如何在 Java 中为 BigDecimal 设置特定精度?

Ale*_*lex 0 java bigdecimal

我有 BigDecimal 值。

BigDecimal price = new BigDecimal("100500100500.9999999").setScale(2, BigDecimal.ROUND_HALF_EVEN);
Run Code Online (Sandbox Code Playgroud)

它打印100500100501.00,虽然我需要100500100500.99. 是否可以对精确评估进行一些限制?

rge*_*man 5

您可以ROUND_DOWNsetScale. 但是,首选采用 a重载setScale方法RoudingMode

BigDecimal price = new BigDecimal("100500100500.9999999")
    .setScale(2, RoundingMode.DOWN);
Run Code Online (Sandbox Code Playgroud)

输出:

100500100500.99
Run Code Online (Sandbox Code Playgroud)