Revision: 2338
Updated Code
at February 2, 2007 11:47 by hansamann
Updated Code
//the two most common number classes def intObj = 5 assert intObj.class.name == 'java.lang.Integer' def bigDecimalObj = 5.12345 assert bigDecimalObj.class.name == 'java.math.BigDecimal' //you can explicitly create Long, Float and Double with L / F / D def longObj = 20L assert longObj.class.name == 'java.lang.Long' def floatObj = 40.45F assert floatObj.class.name == 'java.lang.Float' def doubleObj = 34.45D assert doubleObj.class.name == 'java.lang.Double' //if G is used, it checks if the number has a decimal point, then creates a BigInteger or BigDecimal def bigIntegerObj = 50G assert bigIntegerObj.class.name == 'java.math.BigInteger' //some coercion stuff //multiplication, addition and substraction between two floats results in a double def z = 2F * 2F assert z.class.name == 'java.lang.Double' //multiplication, addition and substraction with BigInteger or BigDecimal results in BigInteger or BigDecimal def product = 1.1G * 2 //BigDecimal and Integer assert product.class.name == 'java.math.BigDecimal' (3G*4).class.name == 'java.math.BigInteger' //BigInteger and Integer //multiplication of two integers assert (5*4).class.name == 'java.lang.Integer' //multiplication with Long assert (1L*4).class.name == 'java.lang.Long' //dividing some numbers (5/5).class.name == 'java.math.BigDecimal' //if you want an integer, use the intdiv() method (5.intdiv(5)).class.name == 'java.lang.Integer' (1.intdiv(5)).class.name == 'java.lang.Integer' //result is 0 assert 1/2 == 0.5 //some GDK methods for numbers //think about a java for loop... you don't need it! def numbers = [] 10.times { numbers << it } //it will contain values from 0 to 9 assert numbers.join(",") == '0,1,2,3,4,5,6,7,8,9' 10.upto(12) { numbers << it} assert numbers.join(",") == '0,1,2,3,4,5,6,7,8,9,10,11,12' 11.downto(10) { numbers << it} assert numbers.join(",") == '0,1,2,3,4,5,6,7,8,9,10,11,12,11,10' numbers = [] 1.step(2, 0.1) { numbers << it; assert it.class.name == 'java.math.BigDecimal' } assert numbers.join(",") == '1,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9' //notice 2 is not included numbers = [] 1.0.step(2, 0.1) { numbers << it; assert it.class.name == 'java.math.BigDecimal' } assert numbers.join(",") == '1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9' //notice how the first value changed to 1.0
Revision: 2337
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at February 2, 2007 10:27 by hansamann
Initial Code
//the two most common number classes def intObj = 5 assert intObj.class.name == 'java.lang.Integer' def bigDecimalObj = 5.12345 assert bigDecimalObj.class.name == 'java.math.BigDecimal' //you can explicitly create Long, Float and Double with L / F / D def longObj = 20L assert longObj.class.name == 'java.lang.Long' def floatObj = 40.45F assert floatObj.class.name == 'java.lang.Float' def doubleObj = 34.45D assert doubleObj.class.name == 'java.lang.Double' //if G is used, it checks if the number has a decimal point, then creates a BigInteger or BigDecimal def bigIntegerObj = 50G assert bigIntegerObj.class.name == 'java.math.BigInteger' //some coercion stuff //multiplication, addition and substraction between two floats results in a double def z = 2F * 2F assert z.class.name == 'java.lang.Double' //multiplication, addition and substraction with BigInteger or BigDecimal results in BigInteger or BigDecimal def product = 1.1G * 2 //BigDecimal and Integer assert product.class.name == 'java.math.BigDecimal' (3G*4).class.name == 'java.math.BigInteger' //BigInteger and Integer //multiplication of two integers assert (5*4).class.name == 'java.lang.Integer' //multiplication with Long assert (1L*4).class.name == 'java.lang.Long' //dividing some numbers (5/5).class.name == 'java.math.BigDecimal' //if you want an integer, use the intdiv() method (5.intdiv(5)).class.name == 'java.lang.Integer' (1.intdiv(5)).class.name == 'java.lang.Integer' //result is 0 assert (1/2).toString() == '0.5' //some GDK methods for numbers //think about a java for loop... you don't need it! def numbers = [] 10.times { numbers << it } //it will contain values from 0 to 9 assert numbers.join(",") == '0,1,2,3,4,5,6,7,8,9' 10.upto(12) { numbers << it} assert numbers.join(",") == '0,1,2,3,4,5,6,7,8,9,10,11,12' 11.downto(10) { numbers << it} assert numbers.join(",") == '0,1,2,3,4,5,6,7,8,9,10,11,12,11,10' numbers = [] 1.step(2, 0.1) { numbers << it; assert it.class.name == 'java.math.BigDecimal' } assert numbers.join(",") == '1,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9' //notice 2 is not included numbers = [] 1.0.step(2, 0.1) { numbers << it; assert it.class.name == 'java.math.BigDecimal' } assert numbers.join(",") == '1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9' //notice how the first value changed to 1.0
Initial URL
Initial Description
Initial Title
Groovy Series: Numbers
Initial Tags
Initial Language
Groovy