如何在Bigdecimal存储3000.00

时间:2017-10-01 17:25:35

标签: java 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,但我想为我的junit测试存储3000.00。不知道怎么做。

2 个答案:

答案 0 :(得分:3)

还有两个选择:

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

第一个仅适用于整数金额。 .setScale(2)然后只是"在小数点后面加两个零"。第二个需要重新缩放的值(例如,如果要表示美元,则为整数分数),并声明小数点应放在末尾两位数。

两个版本都不需要字符串表示,这可能是一个非常好的性能。

答案 1 :(得分:1)

您应使用constructor接受String val作为:

BigDecimal expectedAmount = new BigDecimal("3000.00");