在Java应用程序中,我有一个包含以下情况的单元测试:
BigDecimal rendimentoLordoProvvisiorioExpected = new BigDecimal(2.85000);
BigDecimal rendimentoLordoProvvisiorioDB = null;
rendimentoLordoProvvisiorioDB = pucManager.getRendimentoLordoProvvisorio(date);
assertTrue(rendimentoLordoProvvisiorioExpected.compareTo(rendimentoLordoProvvisiorioDB) == 0);
Run Code Online (Sandbox Code Playgroud)
所述的值rendimentoLordoProvvisiorioExpected变量被手动设置好的到2.85000和所获得的值rendimentoLordoProvvisiorioDB是2.85000.
问题是,当我这样做时,比较assertTrue() JUnit函数
assertTrue(rendimentoLordoProvvisiorioExpected.compareTo(rendimentoLordoProvvisiorioDB) == 0);
Run Code Online (Sandbox Code Playgroud)
它失败是因为rendimentoLordoProvvisiorioExpected似乎是2.850000000000000088817841970012523233890533447265625而不是2.85000(已设置).
为什么?如何修改以前的代码以将rendimentoLordoProvvisiorioExpected设置为预期值2.85000?
使用BigDecimal rendimentoLordoProvvisiorioExpected = new BigDecimal("2.85000");而不是BigDecimal rendimentoLordoProvvisiorioExpected = new BigDecimal(2.85000);
你所做的是从double构建一个BigDecimal,并且双精度不准确.
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |