java - Double 小于零的双重转换

标签 java syntax

Double out = otherTypes.someMethod(c, c2);
assertEquals((Double)-1.0D, out);

我收到错误“Double cannot be resolved”(assertEquals 中的 Double),除了提取变量之外,还有什么办法可以绕过它吗?

这个错误是 Java 中的还是只是非常有用的功能,不会被修复?

最佳答案

一个重要说明:由于 float 的工作方式,您永远不应该直接比较两个 double (或通常所说的 float )是否相等,如果它们的差异在指定的增量范围内,请始终进行比较:abs(double1 - double2) < delta .

JUnit 有一个 assertEquals(double expected, double actual, double delta)方法来做到这一点。也就是说,您可能应该使用类似

assertEquals(-1.0d, (double) out, 0.000001d)

在您的代码中。

例如,您可以在 Brian Goetz 的一篇文章中找到有关 float 技巧和陷阱的更多信息:"Where's your point?"

关于java - Double 小于零的双重转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/224646/

相关文章:

java - 可选化 Java getter

java - 无法反射(reflect)。异常 java.lang.IllegalArgumentException : object is not an instance of declaring class

MySQL 语法中的 PHP 错误

JavaScript 公式语法不起作用

java - 将字符串转换为按键事件

java - 如何让2个或更多java项目写入一个日志文件

java - Java 上的 "T..."是什么?

SQLite 语法错误(从 PostgreSQL 转换)

javascript - 是否有以下反射语言功能的名称和标准实现方式?

java - 如何使java流畅界面中的方法首先弹出?