gpt4 book ai didi

java - 在Junit测试中,如何使用assertEquals()比较两个ArrayList,是否有更好的替代方案?

转载 作者:行者123 更新时间:2023-12-02 03:33:23 25 4
gpt4 key购买 nike

我目前正在编写一个 Junit 测试,其中使用 assertEquals()比较两个 ArrayList<Double> 的值。

@Test
public void test(){

QuadraticFormula one = new QuadraticFormula(3, 4, -4);
List<Double> results = new ArrayList<>();
results.add(0.66666);
results.add(-2.0);

assertEquals(results, one.getRoots());
}

但是,Junit 打印出以下失败消息:

expected:<[0.66666, -2.0]> but was:<[0.6666666666666666, -2.0]>
junit.framework.AssertionFailedError

我是否可以指定我想要测试比较多少位小数?我知道如何以一定的精度测试两个 double 值的相等性,但是在比较两个 double 的 ArrayList 时是否可以实现这一点?

最佳答案

您可以使用NumberFormatBigDecimal

下面将进行一轮

    double d = 0.66666666;
NumberFormat format = new DecimalFormat("#.##");
System.out.println(format.format(d)); // 0.67
BigDecimal bigDecimal = new BigDecimal(d);
bigDecimal = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println(bigDecimal); // 0.67

如果你不想循环

    double d = 0.66666666;
DecimalFormat format = new DecimalFormat("#.##");
format.setRoundingMode(RoundingMode.DOWN);
System.out.println(format.format(d)); // 0.66
BigDecimal bigDecimal = new BigDecimal(d);
bigDecimal = bigDecimal.setScale(2, RoundingMode.DOWN);
System.out.println(bigDecimal); //0.66

关于java - 在Junit测试中,如何使用assertEquals()比较两个ArrayList<Double>,是否有更好的替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37759448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com