Groovy 数字类型

2019-04-27 17:24|来源: 网路

在Groovy中,数字实际上表示为对象,它们都是类Integer的一个实例。要使对象做某事,我们需要调用在其类中声明的一个方法。

Groovy支持整数和浮点数。

  • 整数是不包含分数的值。

  • 浮点数是包含小数部分的十进制值。

Groovy中的数字示例如下所示 -

Integer x = 5; 
Float y = 1.25;

其中x是整数类型,y是浮点数。

groovy中的数字被定义为对象的原因通常是因为存在对数字执行操作的要求。在原始类型上提供类的概念被称为包装类。

默认情况下,Groovy中提供了以下包装程序类。

包装类

包装类的对象包含或包装其各自的基本数据类型。将原始数据类型转换为对象的过程称为装箱,这由编译器负责。将对象转换回其对应的基本类型的过程称为取消装箱。

例子

以下是装箱和拆箱的例子 -

class Example { 
   static void main(String[] args) {
      Integer x = 5,y = 10,z = 0; 
		
      // The the values of 5,10 and 0 are boxed into Integer types 
      // The values of x and y are unboxed and the addition is performed 
      z = x+y; 
      println(z);
   }
}

上述程序的输出将为5.在上述示例中,5,10和0的值相应地首先嵌入到整数变量x,y和z中。上述程序的输出将是5。然后,当执行x和y的添加时,值从其整数类型取消装箱。

数字方法

由于Groovy中的Numbers表示为类,以下是可用的方法列表。

序号 方法和描述
1 xxxValue()

此方法接受Number作为参数,并基于调用的方法返回基本类型。

2 compareTo()

compareTo方法是使用比较一个数字与另一个数字。如果要比较数字的值,这是有用的。

3 equals()

该方法确定调用方法的Number对象是否等于作为参数传递的对象。

4 valueOf()

valueOf方法返回保存所传递的参数的值的相关Number对象。

5 toString()

该方法用于获取表示Number对象的值的String对象。

6 parseInt()

此方法用于获取某个String的原始数据类型。 parseXxx()是一个静态方法,可以有一个参数或两个参数。

7 abs()

该方法给出了参数的绝对值。参数可以是int,float,long,double,short,byte。

8 ceil()

方法ceil给出大于或等于参数的最小整数。

9 floor()

方法floor给出小于或等于参数的最大整数。

10 rint()

方法rint返回值最接近参数的整数。

11 round()

方法round返回最接近的long或int,由方法返回类型给出。

12 min()

该方法给出两个参数中较小的一个。参数可以是int,float,long,double。

13 max()

该方法给出了两个参数的最大值。参数可以是int,float,long,double。

14 exp()

该方法返回自然对数e的底数为参数的幂。

15 log()

该方法返回参数的自然对数。

16 pow()

该方法返回第一个参数的值增加到第二个参数的幂。

17 sqrt()

该方法返回参数的平方根。

18 sin()

该方法返回指定double值的正弦值。

19 cos()

该方法返回指定double值的余弦值。

20 tan()

该方法返回指定double值的正切值。

21 asin()

该方法返回指定double值的反正弦值。

22 acos()

该方法返回指定double值的反余弦值。

23 atan()

该方法返回指定double值的反正切。

24 atan2()

该方法将直角坐标(x,y)转换为极坐标(r,theta),并返回theta。

25 parseInt()

该方法将参数值转换为度。

26 radian()

该方法将参数值转换为弧度。

27 random()

该方法用于生成介于0.0和1.0之间的随机数。范围是:0.0 = <Math.random <1.0。通过使用算术可以实现不同的范围。

相关问答

更多
  • 这是代码,它执行您描述的内容: def number = "12345678" def result = number.collect().collate(2).collect{it.join('')}.join(':') 数字定义为String - 如果你的数字是数字,只需将其转换为带有.toString()的字符串 number.collect()将字符串转换为列表 .collate(2)创建大小为2的子列表 .collect{it.join('')}加入子列表的元素 .join(':')将所有子列表 ...
  • chanceWheel[randomInRange(0,9)].timesPicked++ 是 chanceWheel[randomInRange(0,9)].timesPicked = chanceWheel[randomInRange(0,9)].timesPicked + 1 与调用一次并分配给变量的工作示例相比,它调用了randomRange()两次。 chanceWheel[randomInRange(0,9)].timesPicked++ is chanceWheel[ra ...
  • 请改用testArray = [:] 。 这不是一个数组而是一个地图 (具体的LinkedHashMap和[:]是Groovy用来创建它的文字)。 Java / Groovy中的地图是用于存储键值关系的关联数据结构。 通过map[key]访问是Groovy带来的增强功能。 Use testArray = [:] instead. And this is not an array but a map (a LinkedHashMap to be specific and [:] is the literal ...
  • JUnit比较失败只显示以String 形式表示的值之间的差异,但isEqualTo断言根据它们的类型比较值,最终对基本类型执行诸如actual.equals(expected) (或actual == expected) for primitive types 。 如果执行assertThat( spyCH.getLoopCount() ).isEqualTo( 456 )则错误将如下所示: org.junit.ComparisonFailure: expected:<[1]> but was:<[456 ...
  • 您不必将其转换为数字,因为响应中的值是字符串。 定义测试用例级自定义属性说EXPECTED_TAX_RATE并提供值为6.75 。 在响应中, rate是一个字符串值。 在这种特殊情况下,不需要创建额外的Groovy Script测试步骤来检查/比较值,删除步骤。 相反,使用上面的代码为其余请求测试步骤本身添加Script Assertion 。 但是,阅读响应需要很小的变化。 这是完整的Script Assertion //Check the response is received assert con ...
  • 这很简单,可以理解吗? def doSomething(a, b){ a + b } //Type inferred to String assert "HelloWorld" == doSomething('Hello','World') assert "String" == doSomething('Hello','World').class.simpleName //Type inferred to Integer assert 5 == doSomething(2,3) assert "I ...
  • 您可能想要使用NumberFormat.getCurrencyInstance() 。 这将返回一个NumberFormat对象,该对象使用默认Locale的标准货币表示形式(或者可选地,您传入的)。 要向右对齐,可以使用String.padLeft() 。 例: def formatter = java.text.NumberFormat.currencyInstance def values = [0, 100000000, 9123123.25, 10.20, 1907.23] def formatt ...
  • 5.each在Groovy解析器中优先于1..5 。 它的工作原理是因为它做了这样的事情: ret = 5.each { println it } range = 1..ret assert range == [1, 2, 3, 4, 5] each回报都是收集本身 5.each has priority over 1..5 in the Groovy parser. It works because it is doing something like this: ret = 5.each { prin ...
  • class Foo extends Bar { public def someField = new ArrayList() } class Bar { private List anotherField = null } def foo = new Foo() println(foo.someField.class) // class java.util.ArrayList println(List.class.isInstance(foo.someField)) // t ...
  • 问题在于[1..100]。 方括号是列表的语法。 因此,这是IntRange的列表而不是范围本身。 你想要的是: def numbers = 1..100 def divisibleBy7 = numbers.findAll {it % 7 == 0 } divisibleBy7.each{println it} 您还可以使用范围周围的parens。 The problem is with [1..100]. The square brackets are the syntax for a list. T ...