groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jochen Theodorou <blackd...@gmx.org>
Subject Re: Math Operations
Date Fri, 09 Oct 2015 19:18:47 GMT
Am 09.10.2015 um 20:55 schrieb Winnebeck, Jason:
> OK, so int + BigDecimal is a bug in documentation then.
>
> I am using Groovy Shell (2.4.3, JVM: 1.8.0_45), and in that I run this:
>
> groovy:000> println (((byte)1 + (short)1).class)
> class java.lang.Byte
> ===> null
> groovy:000> println ((byte)1 + (short)1)
> 2
> ===> null
>
> I wondered if Groovy was somehow picking the "smallest" type, because byte + short ->
byte makes no sense at all unless Groovy was looking at the result. However, this doesn't
look good at all:
> groovy:000> println ((byte)1 + (short)700)
> -67
>
> It looks like it really is doing the math as bytes. What version of Groovy are you using
where it works?

I just checked several version and you are right. This used to happen 
between 1.7.0 and 2.4.3  Always interesting to see a long term bug, 
nobody has bothered reporting before or went unnoticed. Anyway, 1.6.x 
and older versions behave right, as does 2.4.4. It also means we have a 
lot of versions in which primopts (Groovy 1.8.0+) and normal Groovy do 
behave different.... as well as static compilation and some versions of 
indy.


  bye blackdrag


-- 
Jochen "blackdrag" Theodorou
blog: http://blackdragsview.blogspot.com/


Mime
View raw message