groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alberto Vilches <>
Subject Casting Double to BigDecimal
Date Fri, 08 Jan 2016 12:15:54 GMT
Hi everybody! We have an issue in our application, and we realized these
two lines have differents results. We wonder why because we think it should
calls to the DefaultGroovyMethods.asType(Number self, Class<T> c). But it
seems only the explicit call to "as" finally calls to the asType and the
casting do a different thing (just a new BigDecimal(1.9D), but we wonder in
which part of Groovy is happening)

(BigDecimal)1.9D  //
"1.899999999999999911182158029987476766109466552734375" ->
1.9D as BigDecimal  // "1.9"

In fact, we tried to put these two lines in the Groovy console and see the
AST in all the phases. But in all of them shows the same code:

   public java.lang.Object run() {
        ((1.9) as java.math.BigDecimal)
        return ((1.9) as java.math.BigDecimal)

Somebody please could give some light? Thank you very much and happy new
year :)

Un saludo.
Alberto Vilches

View raw message