双重小于零的双重投射

3 java syntax

Double out = otherTypes.someMethod(c, c2);
assertEquals((Double)-1.0D, out);
Run Code Online (Sandbox Code Playgroud)

我得到错误"Double无法解析"(assertEquals中的Double),除了提取变量之外,还有什么方法可以解决它吗?

这是Java中的错误还是非常有用的功能,无法修复?

WMR*_*WMR 6

一个重要的注意事项:由于浮点数的工作方式,你不应该直接比较两个双精度(或通常说的浮点数)的相等性,如果它们的差值在指定的delta内,则总是进行比较:abs(double1 - double2) < delta.

JUnit有一种assertEquals(double expected, double actual, double delta)方法可以做到这一点.也就是说,你应该使用类似的东西

assertEquals(-1.0d, (double) out, 0.000001d)
Run Code Online (Sandbox Code Playgroud)

在你的代码中.

你可以在Brian Goetz的文章中找到更多有关浮点数的技巧和陷阱:"你的意思在哪里?"