Java Mailing List Archive

http://www.gg3721.com/

Home » user.groovy »

Re: [groovy-user] Change in BicDecimal coercion?

Ronny Løvtangen

2010-02-09

Replies: Find Java Web Hosting

Author LoginPost Reply
I would expect d.toBigDecimal() to preserve as much precision as possible.
If this is not the case, I think at least the javadoc should say so. Current javadoc says "Transform a Number into a BigDecimal"

I still find it hard to believe that d.toBigDecimal() and new BigDecimal(d) intentionally should produce different result.

Ronny

On Feb 9, 2010, at 4:35 PM, Jim White wrote:

> Ronny Løvtangen wrote:
>
>> Yes, I would expect all variants to produce the same result, so I guess it's not intended. I also tried with new BigDecimal(d)
>> In both 1.6.5, 1.6.6 an 1.7.0, the result is 0.1411200080598672135234750157906091772019863128662109375.
>
> I don't recall whether there was a change at 1.6.5 or not, although I have a faint memory of doing something in that area.
>
> I don't agree though that all forms of coercion should give the same result.
>
> The assignment is doing a cast rather than a "groovy" (typical expected human-friendly result) conversion that "as" does and is full precision.
>
> When doing calculations there must be a way to get that, and I'm thinking there was a change for just that purpose.
>
> Unfortunately I can't look into this deeper at the moment. Perhaps someday we can just have a FAQ that points to the relevant paragraph in the spec...
>
> Jim
>
>> Ronny
>> On Feb 8, 2010, at 11:00 PM, Paul King wrote:
>>> I suspect it isn't intended but haven't yet checked the related
>>> Jiras that occurred around that time.
>>>
>>> Paul.
>>>
>>> Ronny Løvtangen wrote:
>>>
>>>> Is this change in behavior from Groovy 1.6.5 to 1.6.6 and later intended, or not?
>>>> Double d = Math.sin(3)
>>>> BigDecimal b1 = d.toBigDecimal()
>>>> BigDecimal b2 = d as BigDecimal
>>>> BigDecimal b3 = d
>>>> println d
>>>> println b1
>>>> println b2
>>>> println b3
>>>> Result, Groovy 1.6.5:
>>>> 0.1411200080598672
>>>> 0.1411200080598672
>>>> 0.1411200080598672
>>>> 0.1411200080598672
>>>> Result, Groovy 1.6.6 and 1.7.0:
>>>> 0.1411200080598672
>>>> 0.1411200080598672
>>>> 0.1411200080598672
>>>> 0.1411200080598672135234750157906091772019863128662109375
>>>> Ronny
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
>  http://xircles.codehaus.org/manage_email
>
>


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

  http://xircles.codehaus.org/manage_email


©2008 gg3721.com - Jax Systems, LLC, U.S.A.