Groovy支持整数和浮点数。整型值没有分数部分。浮点数是包含十进制小数部分的十进制数。
整数可能是正数、负数或者零。12345、-44和0是常见的整数形式。就像前面说到的那样,它们都是Integer类的实例。
有小数部分的数值是BigDecimal类的实例。浮点数的例子如1.23,-3.1415926。请注意,浮点数必须避免以小数点开始,防止出现混淆,比如必须使用0.25,而不是.25来表示浮点数0.25。同样,它的负数也必须使用-0.25来表示。
Integer:12 Long:25L Float:12F,23.6F Double:23D,6.3D java.math.BigLong:23G java.math.BigDecimal:12.3,45.6G
a+b //a.plus(b) a-b //a.minus(b) a*b //a.multiply(b) a/b //a.div(b) or a.intdiv(b) a%b //a.mod(b)
Groovy提供大量适用于数值类型的运算符,包括常见的算术运算符、比较运算符、位运算符,以及其他各种类型的运算符。表达式(expression)通常用来描述某些计算行为,由运算符和操作数组成。算术运算符(arithmetic operator)包括加法(+)、减法(-)、乘法(*)和除法(/)。Groovy同样也支持取模运算符,用百分号表示(%);取模运算用来计算两个整数相除的余数。表2-1列举适用于整数的各种算术运算符。
请注意,两个整数的除法运算通常会产生一个浮点数,即使其结果可能是一个整数。举例来说,表达式6/3的结果是浮点数2.0,而不是整数2。
表2-1 整数运算符
表达式
调用方法
结果
5+3
5.plus(3)
8
5-3
5.minus(3)
2
5*3
5.multiply(3)
15
5/3
5.div(3)
1.6666666667
5%3
5.mod(3)
2
上面的这些运算符也适用于两个浮点数的运算,对应结果如表2-2所示。接下来的表会说明两个浮点数的取模操作。
表2-2 浮点数运算符
表达式
调用方法
结果
5.0+3.0
5.0.plus(3.0)
8.0
5.0-3.0
5.0.minus(3.0)
2.0
5.0*3.0
5.0.multiply(3.0)
15.0
5.0/3.0
5.0.div(3.0)
1.6666666667
同上,除了取模运算符之外,Groovy的算术运算也适用于整数和浮点数的组合。表2-3给出一些范例。
表2-3 混合运算
表达式
调用方法
结果
5+3.2
5.plus(3.2)
8.2
5.6 + 3
5.6.plus(3)
8.6
5 - 3.2
5.minus(3.2)
1.8
5.6 - 3
5.6.minus(3)
2.6
5 * 3.2
5.multiply(3.2)
16.0
5.6 * 3
5.6.multiply(3)
16.8
5 / 3.2
5.div(3.2)
1.5625
5.6 / 3
5.6.div(3)
1.8666666667
如上述几个表所示,不管整数组合,还是整数和浮点数组合,除法运算通常都会得到相同的结果。下面所有组合的结果都是2.6:
13.0/5
13/5.0
13/5
为了获得两个整型值相除的整数部分,必须调用intdiv方法:
13.intdiv(5)
该表达式的结果是整数2。
使用取模运算符(%)可以得到两个整数操作数相除的余数,因此,
13%5 结果值为3
15%5 结果值为0
请注意,对一个浮点数求模,或者对一个含有浮点数参数的整数求模都是非法的。因此,表达式13.0%5.0,13.0%5,13%5.0都会提示mod方法被错误地调用。
intdiv 与 mod方法一样,对象及参数对象都是Integer类型,否则出错