Groovy语言比Java语言使用起来更为方便的一个地方就是Groovy语言引入了对大小数的运算。当然,我们这里所说的大小数,是指精度超过float类型和double类型的小数。我们可能在某些场合会涉及到对大小数的处理,如果是使用Java语言,我们只能是或者使用java.math.BigDecimal来处理,当然,它的使用是很不方便的;或者干脆自己设计数据类型来解决大小数的问题。但是,在Groovy语言中,我们却能够直接使用BigDecimal数据类型来解决这个问题。
在Groovy语言中,小数的默认类型就是BigDecimal类型。
println 1.2.class.name
运行结果为:
java.math.BigDecimal
说到这里,在做int类型除法运算时,有一个Groovy语言和Java语言的区别需要提出来。
在Java语言中,下面的运算:
System.out.println(1/2);
的结果是0。
如果您想获得小数,必须做如下的运算:
System.out.println((float)1/2);
而在Groovy语言中,下面的运算:
println (1/2)
的结果却是0.5。
如果您想取整,必须做如下的运算:
println ((1/2) as int)
在Groovy语言中,我们也可以使用负指数来表示大小数类型。如:
println 1.2e-39
所以,我们初始化一个大小数可以使用小数的方式和负指数的方式。如:
def bd1 = 1.23044953333333333
def bd2 = 1.3e-45
println bd1.class.name
println bd2.class.name
运行结果为:
java.math.BigDecimal
java.math.BigDecimal
当然,我们还可以通过数值型字符串来初始化一个大小数。如:
def bd3 = '1.3e-40' as BigDecimal
def bd4 = new BigDecimal('1.3e-40')
println bd3.class.name
println bd4.class.name
运行结果为:
java.math.BigDecimal
java.math.BigDecimal