5、Groovy Math<o:p></o:p>
l Groovy支持访问所有的Java Math类和操作<o:p></o:p>
l 为了使math操作在脚本编写时尽可能直观,Groovy math模型支持文字化math操作<o:p></o:p>
l 缺省计算使用的是精确的小数(BigDecimal),如:<o:p></o:p>
返回的是true,而不是false(不象在Java中使用float或double)<o:p></o:p>
(1)数字的文字表示<o:p></o:p>
l Groovy的小数文字表示是java.math.BigDecimal的实例,而不是浮点类型(Float或Double)<o:p></o:p>
l Float和Double可以使用后面讲的后缀(F和D)方法来创建<o:p></o:p>
l 小数的指数形式也支持,如12.3e-23<o:p></o:p>
l 十六进制和八进制也支持,十六进制前缀0x,八进制前缀0<o:p></o:p>
l 整数类型可以使用后面讲的后缀(I、L和G)方法来创建,如果不指定根据数值的大小使用合适的类型<o:p></o:p>
l 数字类型的后缀文字表示<o:p></o:p>
_Type_<o:p></o:p> | _Suffix_<o:p></o:p> |
_BigInteger_<o:p></o:p> | G<o:p></o:p> |
_Long_<o:p></o:p> | L<o:p></o:p> |
_Integer_<o:p></o:p> | I<o:p></o:p> |
_BigDecimal_<o:p></o:p> | (缺省)<o:p></o:p> |
_Double_<o:p></o:p> | D<o:p></o:p> |
_Float_<o:p></o:p> | F<o:p></o:p> |
l 例子:<o:p></o:p>
(2)Math操作<o:p></o:p>
l Groovy的Math实现很接近Java 1.5 BigDecimal Math模型的实践<o:p></o:p>
l Java.lang.Number包括其子类的二元操作(除了除法)会根据下表自动转换参数类型<o:p></o:p>
<o:p></o:p> | _BigDecimal_<o:p></o:p> | _BigInteger_<o:p></o:p> | _Double_<o:p></o:p> | _Float_<o:p></o:p> | _Long_<o:p></o:p> | _Integer_<o:p></o:p> |
_BigDecimal_<o:p></o:p> | BigDecimal<o:p></o:p> | BigDecimal<o:p></o:p> | Double<o:p></o:p> | Double<o:p></o:p> | BigDecimal<o:p></o:p> | |
_BigInteger_<o:p></o:p> | BigDecimal<o:p></o:p> | BigInteger<o:p></o:p> | Double<o:p></o:p> | Double<o:p></o:p> | BigInteger<o:p></o:p> | BigInteger<o:p></o:p> |
_Double_<o:p></o:p> | Double<o:p></o:p> | Double<o:p></o:p> | Double<o:p></o:p> | Double<o:p></o:p> | Double<o:p></o:p> | Double<o:p></o:p> |
_Float_<o:p></o:p> | Double<o:p></o:p> | Double<o:p></o:p> | Double<o:p></o:p> | Double<o:p></o:p> | Double<o:p></o:p> | Double<o:p></o:p> |
_Long_<o:p></o:p> | BigDecimal<o:p></o:p> | BigInteger<o:p></o:p> | Double<o:p></o:p> | Double<o:p></o:p> | Long<o:p></o:p> |