我调用一个重载方法(assertThat),它有一个带有BigDecimal参数的签名,另一个带有double原始参数。 当我在groovy中启动这个片段时,当我期望调用double原始参数时,它会调用带有BigDecimal参数的片段。
double[] erreur = Seg.erreur(xtab, ytab, 0, 2)
Assertions.assertThat(erreur[1]).isEqualTo(-0.3333333333333333)
有人可以解释我为什么吗? 提前谢谢。
答案 0 :(得分:1)
默认情况下,groovy中的十进制数是BigDecimal
。如果您希望它是双精度型,则应使用后缀D
或d
:
来自文档中的Number type suffixes:
assert 123.45 == new BigDecimal('123.45') // default BigDecimal type used
assert 1.200065D == new Double('1.200065')
答案 1 :(得分:0)
您的isEqualsTo()
正在传递BigDecimal作为参数,而您的assertThat()
正在传递一个双精度数。只需在d
的末尾添加-0.3333333333333333
即可:
import static org.assertj.core.api.Assertions.assertThat
class Doubles extends GroovyTestCase {
void testAssertions() {
double[] erreur = [0.1, -0.3333333333333333, 0.3]
assertThat(erreur[1]).isEqualTo(-0.3333333333333333d)
}
}