java - 如何在 JUnit assertEquals 中强制 BigDecimal 舍入?

标签 java junit bigdecimal

每次我运行 assertEquals 时,我预期的 BigDecimal 都会四舍五入,这会导致它失败。我如何确保它不会变圆或是否有其他方法?

@Test
public void test() {
    BigDecimal amount = BigDecimal.valueOf(1000);
    BigDecimal interestRate = BigDecimal.valueOf(10);
    BigDecimal years = BigDecimal.valueOf(10);
    InterestCalculator ic = new InterestCalculate(amount, interestRate, years);
    BigDecimal expected = BigDecimal.valueOf(1321.507369947139705200000);
    assertEquals(expected, ic.getMonthlyPaymentAmount());
}

最佳答案

将其放在引号中并使用 BigDecimal 构造函数。

BigDecimal expected = new BigDecimal("1321.507369947139705200000");

如果不这样做,数字会先转换为 double,然后再转换为 BigDecimal,因为 1321.507369947139705200000 是一个 double 文字。这真的不是您想要的。

关于java - 如何在 JUnit assertEquals 中强制 BigDecimal 舍入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20645922/

相关文章:

java - JFreeChart:单击鼠标在散点图上显示数据

java - 如何为 Integer.class 编写匹配器

java - 枚举类型的Android单元测试

java - 在 VS Code 中哪里设置 JUnit 的 vmArgs?

java - bigdecimal 除以整数

java - 无法解析 ArrayList 的构造函数

java - 从 JTextField 替换一个 int

java - JScrollPane 使用方向键滚动

java - 我如何比较 BigDecimals 以使我的测试通过?

java - 为什么我得到 The operator - is undefined for the argument type(s) java.math.BigDecimal, java.math 错误消息