为什么在groovy中double原语是BigDecimal
我调用一个重载方法(assertThat),该方法有一个带有BigDecimal参数的签名和另一个带有double primitive参数的签名。 当我在groovy中启动这个代码段时,它调用了带有BigDecimal参数的代码段,而我希望调用双原语参数one为什么在groovy中double原语是BigDecimal,groovy,Groovy,我调用一个重载方法(assertThat),该方法有一个带有BigDecimal参数的签名和另一个带有double primitive参数的签名。 当我在groovy中启动这个代码段时,它调用了带有BigDecimal参数的代码段,而我希望调用双原语参数one double[] erreur = Seg.erreur(xtab, ytab, 0, 2) Assertions.assertThat(erreur[1]).isEqualTo(-0.3333333333333333) 有人能解释一下
double[] erreur = Seg.erreur(xtab, ytab, 0, 2)
Assertions.assertThat(erreur[1]).isEqualTo(-0.3333333333333333)
有人能解释一下为什么吗?
提前感谢。默认情况下,groovy中的十进制数是
BigDecimal
。如果您希望它是双精度的,您应该使用后缀D
或D
:
从文档中的:
assert 123.45 == new BigDecimal('123.45') // default BigDecimal type used
assert 1.200065D == new Double('1.200065')
您的isEqualsTo()
正在传递一个BigDecimal作为参数,而您的assertThat()
正在传递一个double。只需在-0.3333
的末尾添加一个d
,它就可以工作了:
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)
}
}
是
Assertions
junit吗?没有断言是AssertJ。