groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Guillaume Laforge <glafo...@gmail.com>
Subject Re: Casting Double to BigDecimal
Date Fri, 08 Jan 2016 14:48:00 GMT
Out of curiosity, in your code, you really do verbatim
(Bigdecimal)1.9D or 1.9.D as BigDecimal?
Or is the number value passed as a parameter?
Because, you know that 1.9 is actually a BigDecimal already in Groovy, right?

Guillaume

On Fri, Jan 8, 2016 at 1:15 PM, Alberto Vilches <vilches@gmail.com> wrote:
> 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



-- 
Guillaume Laforge
Apache Groovy committer & PMC member
Product Ninja & Advocate at Restlet

Blog: http://glaforge.appspot.com/
Social: @glaforge / Google+

Mime
View raw message