JUnit 断言:在浮点数之间进行断言

发布于 2024-12-06 15:58:24 字数 163 浏览 1 评论 0原文

我需要比较两个值:一个是字符串,另一个是浮点数 所以我将字符串转换为浮点数,然后尝试调用 assertEquals(val1,val2) 但这是未经授权的,我猜 assertEquals 不接受浮点数作为参数。

在这种情况下我的解决方案是什么?

I need to compare two values : one a string and the other is float
so I convert the string to float then try to call assertEquals(val1,val2) but this is not authorized , I guess that the assertEquals doesn't accept float as arguments.

What is the solution for me in this case ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

烏雲後面有陽光 2024-12-13 15:58:24

您必须为浮点数的断言提供增量:

Assert.assertEquals(expected, actual, delta)

而增量是预期值与实际值之间的最大差异 (delta),对于该差异,两个数字仍被视为相等。

Assert.assertEquals(0.0012f, 0.0014f, 0.0002); // true
Assert.assertEquals(0.0012f, 0.0014f, 0.0001); //false

You have to provide a delta to the assertion for Floats:

Assert.assertEquals(expected, actual, delta)

While delta is the maximum difference (delta) between expected and actual for which both numbers are still considered equal.

Assert.assertEquals(0.0012f, 0.0014f, 0.0002); // true
Assert.assertEquals(0.0012f, 0.0014f, 0.0001); //false
缘字诀 2024-12-13 15:58:24

0.0f 的 delta 值也有效,因此对于老式的“==”比较(小心使用!),您可以编写

Assert.assertEquals(expected, actual, 0.0f);

而不是

Assert.assertEquals(expected, actual); // Deprecated
Assert.assertTrue(expected == actual); // Not JUnit

I like JUnit 确保您真正考虑了“delta”的方式,而“delta”应该是0.0f 在非常微不足道的情况下。

A delta-value of 0.0f also works, so for old fashioned "==" compares (use with care!), you can write

Assert.assertEquals(expected, actual, 0.0f);

instead of

Assert.assertEquals(expected, actual); // Deprecated
Assert.assertTrue(expected == actual); // Not JUnit

I like the way JUnit ensures that you really thought about the "delta" which should only be 0.0f in really trivial cases.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文