在JUnit中对float和double值使用assertTrue可以吗?

在JUnit中对float和double值使用assertTrue可以吗?,junit,decimal,assert,Junit,Decimal,Assert,我尝试在浮点上使用assertEquals方法,eclipse表示该方法已贬值。因此,以下替代方案是否可以接受 Assert.assertTrue("Total does not match expected total :", receipt.getTotal() == 32.19f); 为什么在测试中不能使用assertEquals来比较两个浮点数或两个浮点数 一般来说,在JUnit中断言两个十进制值相

我尝试在浮点上使用assertEquals方法,eclipse表示该方法已贬值。因此,以下替代方案是否可以接受

Assert.assertTrue("Total does not match expected total :",
                                            receipt.getTotal() == 32.19f);
为什么在测试中不能使用assertEquals来比较两个浮点数或两个浮点数


一般来说,在JUnit中断言两个十进制值相等的最佳方法是什么。我使用的是JUnit的4.10版本。一般来说,您可以将原语类型与==进行比较,但对于浮点值,两个值可以看起来相同(格式化为字符串时),但可以是两个不同的值。你应该使用。看看答案

因为双精度(和浮点)计算不一定精确,所以可以使用增量(实际上是误差幅度)进行比较