如何在 Bigdecimal 中存储 3000.00

How to store 3000.00 in Bigdecimal

我尝试了以下选项。

BigDecimal expectedAmount = BigDecimal.valueOf(3000.00);

BigDecimal expectedAmount = BigDecimal.valueOf(3000);

BigDecimal expectedAmount = new BigDecimal(3000.00);

BigDecimal expectedAmount = new BigDecimal(3000);

它们都存储 3000.0,但我想存储 3000.00 用于我的 junit 测试。不知道该怎么做。

您应使用 constructor 接受字符串 val 作为:

BigDecimal expectedAmount = new BigDecimal("3000.00");

还有两个选项:

BigDecimal expectedAmount1 = new BigDecimal(3000).setScale(2);
BigDecimal expectedAmount2 = BigDecimal.valueOf(300000L, 2);

第一个仅适用于整数金额。 .setScale(2) 然后只是 "adds two zeroes after the decimal point"。第二个需要一个重新缩放的值(例如,如果你想表示美元,则为整数分),并声明小数点要放在末尾左边两位数。

两个版本都不需要字符串表示,这在性能上具有很大优势。