数值函数

数值数学函数仅对数值表达式进行运算,如果用于其他类型的值,将返回错误。另请参阅 数学运算符

示例图

以下图表用于下方的示例

要重新创建该图,请在空的 Neo4j 数据库中运行以下查询

CREATE
  (alice:Developer {name:'Alice', age: 38, eyes: 'Brown'}),
  (bob:Administrator {name: 'Bob', age: 25, eyes: 'Blue'}),
  (charlie:Administrator {name: 'Charlie', age: 53, eyes: 'Green'}),
  (daniel:Adminstrator {name: 'Daniel', age: 54, eyes: 'Brown'}),
  (eskil:Designer {name: 'Eskil', age: 41, eyes: 'blue', likedColors: ['Pink', 'Yellow', 'Black']}),
  (alice)-[:KNOWS]->(bob),
  (alice)-[:KNOWS]->(charlie),
  (bob)-[:KNOWS]->(daniel),
  (charlie)-[:KNOWS]->(daniel),
  (bob)-[:MARRIED]->(eskil)

abs()

详细信息

语法

abs(input)

描述

返回 INTEGER(整数)或 FLOAT(浮点数)的绝对值。

参数

名称

类型

描述

input

INTEGER | FLOAT

返回其绝对值的数值。

返回

INTEGER | FLOAT

注意事项

abs(null) 返回 null

如果 input 为负数,则返回 -(input)(即 input相反数)。

示例 1. abs()
查询
MATCH (a), (e) WHERE a.name = 'Alice' AND e.name = 'Eskil'
RETURN a.age, e.age, abs(a.age - e.age)

返回年龄差的绝对值。

结果
a.age e.age abs(a.age - e.age)

38

41

3

行:1

ceil()

详细信息

语法

ceil(input)

描述

返回大于或等于给定数字且等于 INTEGER(整数)的最小 FLOAT(浮点数)。

参数

名称

类型

描述

input

FLOAT

要舍入到最接近的较大整数的值。

返回

FLOAT

注意事项

ceil(null) 返回 null

示例 2. ceil()
查询
RETURN ceil(0.1)

返回 0.1 的向上取整值。

结果
ceil(0.1)

1.0

行:1

ceiling()

详细信息

语法

ceiling(input)

描述

返回大于或等于给定数字且等于 INTEGER(整数)的最小 FLOAT(浮点数)。

参数

名称

类型

描述

input

FLOAT

要舍入到最接近的较大整数的值。

返回

FLOAT

此函数是 ceil() 函数的别名,它是作为 Cypher® 的 GQL 一致性的一部分引入的。底层的 ceil() 函数已符合 GQL 标准;仅添加了 GQL 命名别名。

注意事项

ceiling(null) 返回 null

示例 3. ceiling()
查询
RETURN ceiling(0.1)

返回 0.1 的向上取整值。

结果
ceiling(0.1)

1.0

行:1

floor()

详细信息

语法

floor(input)

描述

返回小于或等于给定数字且等于 INTEGER(整数)的最大 FLOAT(浮点数)。

参数

名称

类型

描述

input

FLOAT

要舍入到最接近的较小整数的值。

返回

FLOAT

注意事项

floor(null) 返回 null

示例 4. floor()
查询
RETURN floor(0.9)

返回 0.9 的向下取整值。

结果
floor(0.9)

0.0

行:1

isNaN()

详细信息

语法

isNaN(input)

描述

返回给定的 INTEGERFLOAT 是否为 NaN(非数值)。

参数

名称

类型

描述

input

INTEGER | FLOAT

要与 NaN 进行比较的数值。

返回

布尔值 (BOOLEAN)

注意事项

isNaN(null) 返回 null

示例 5. isNaN()
查询
RETURN isNaN(0/0.0)

因为该值为 NaN,所以返回 true

结果
isNaN(0/0.0)

true

行:1

rand()

详细信息

语法

rand()

描述

返回一个介于 0(含)到 1(不含)之间的随机 FLOAT

返回

FLOAT

示例 6. rand()
查询
RETURN rand()

返回一个随机数。

结果
rand()

0.5460251846326871

行:1

round()

详细信息

语法

round(value[, precision, mode])

描述

返回舍入后的数字值,可选择使用指定的精度和舍入模式。

参数

名称

类型

描述

FLOAT

要舍入的值。

precision

INTEGER | FLOAT

舍入精度(默认:0)。

mode

STRING

精度舍入模式(UP, DOWN, CEILING, FLOOR, HALF_UP, HALF_DOWN, HALF_EVEN)(默认:UP)。

返回

FLOAT

模式
mode 描述

UP

远离零方向舍入。

DOWN

向零方向舍入。

CEILING

向正无穷大方向舍入。

FLOOR

向负无穷大方向舍入。

HALF_UP

向给定精度的最近值舍入,如果距离相等,则总是远离零方向舍入。

HALF_DOWN

向给定精度的最近值舍入,如果距离相等,则总是向零方向舍入。

HALF_EVEN

向给定精度的最近值舍入,如果距离相等,则总是向偶数邻居舍入。

注意事项

对于舍入模式,“距离相等”(tie)意味着给定精度的两个最近值与给定值的距离相同。例如,对于精度 1,2.15 是距离相等的,因为它到 2.1 和 2.2 的距离相同;而 2.151 不是距离相等的,因为它更接近 2.2。

如果任何输入参数为 nullround() 将返回 null

示例 7. round()
查询
RETURN round(3.141592)

返回 3.0

结果
round(3.141592)

3.0

行:1

示例 8. 负数的舍入(存在距离相等的情况)
查询
RETURN round(-1.5)

距离相等的情况向正无穷大方向舍入,因此返回 -1.0

结果
round(-1.5)

-1.0

行:1

带精度的 round()

示例 9. 带精度的 round()
查询
RETURN round(3.141592, 3)

返回 3.142

结果
round(3.141592, 3)

3.142

行:1

示例 10. 精度为 0 且存在距离相等的情况
查询
RETURN round(-1.5, 0)

为了与 round(-1.5) 一致,返回 -1.0

结果
round(-1.5, 0)

-1.0

行:1

示例 11. 精度为 1 且存在距离相等的情况
查询
RETURN round(-1.55, 1)

默认做法是在距离相等时远离零方向舍入,因此返回 -1.6

结果
round(-1.55, 1)

-1.6

行:1

带精度和舍入模式的 round()

示例 12. 带精度和 UP 舍入模式的 round()
查询
RETURN round(1.249, 1, 'UP') AS positive,
round(-1.251, 1, 'UP') AS negative,
round(1.25, 1, 'UP') AS positiveTie,
round(-1.35, 1, 'UP') AS negativeTie

返回使用精度 1 和 UP 舍入模式计算后的舍入值。

结果
positive negative positiveTie negativeTie

1.3

-1.3

1.3

-1.4

行:1

示例 13. 带精度和 DOWN 舍入模式的 round()
查询
RETURN round(1.249, 1, 'DOWN') AS positive,
round(-1.251, 1, 'DOWN') AS negative,
round(1.25, 1, 'DOWN') AS positiveTie,
round(-1.35, 1, 'DOWN') AS negativeTie

返回使用精度 1 和 DOWN 舍入模式计算后的舍入值。

结果
positive negative positiveTie negativeTie

1.2

-1.2

1.2

+-1.3

行:1

示例 14. 带精度和 CEILING 舍入模式的 round()
查询
RETURN round(1.249, 1, 'CEILING') AS positive,
round(-1.251, 1, 'CEILING') AS negative,
round(1.25, 1, 'CEILING') AS positiveTie,
round(-1.35, 1, 'CEILING') AS negativeTie

返回使用精度 1 和 CEILING 舍入模式计算后的舍入值。

结果
positive negative positiveTie negativeTie

1.3

-1.2

1.3

-1.3

行:1

示例 15. 带精度和 FLOOR 舍入模式的 round()
查询
RETURN round(1.249, 1, 'FLOOR') AS positive,
round(-1.251, 1, 'FLOOR') AS negative,
round(1.25, 1, 'FLOOR') AS positiveTie,
round(-1.35, 1, 'FLOOR') AS negativeTie

返回使用精度 1 和 FLOOR 舍入模式计算后的舍入值。

结果
positive negative positiveTie negativeTie

1.2

-1.3

1.2

-1.4

行:1

示例 16. 带精度和 HALF_UP 舍入模式的 round()
查询
RETURN round(1.249, 1, 'HALF_UP') AS positive,
round(-1.251, 1, 'HALF_UP') AS negative,
round(1.25, 1, 'HALF_UP') AS positiveTie,
round(-1.35, 1, 'HALF_UP') AS negativeTie

返回使用精度 1 和 HALF_UP 舍入模式计算后的舍入值。

结果
positive negative positiveTie negativeTie

1.2

-1.3

1.3

-1.4

行:1

示例 17. 带精度和 HALF_DOWN 舍入模式的 round()
查询
RETURN round(1.249, 1, 'HALF_DOWN') AS positive,
round(-1.251, 1, 'HALF_DOWN') AS negative,
round(1.25, 1, 'HALF_DOWN') AS positiveTie,
round(-1.35, 1, 'HALF_DOWN') AS negativeTie

返回使用精度 1 和 HALF_DOWN 舍入模式计算后的舍入值。

结果
positive negative positiveTie negativeTie

1.2

-1.3

1.2

-1.3

行:1

示例 18. 带精度和 HALF_EVEN 舍入模式的 round()
查询
RETURN round(1.249, 1, 'HALF_EVEN') AS positive,
round(-1.251, 1, 'HALF_EVEN') AS negative,
round(1.25, 1, 'HALF_EVEN') AS positiveTie,
round(-1.35, 1, 'HALF_EVEN') AS negativeTie

返回使用精度 1 和 HALF_EVEN 舍入模式计算后的舍入值。

结果
positive negative positiveTie negativeTie

1.2

-1.3

1.2

-1.4

行:1

sign()

详细信息

语法

sign(input)

描述

返回 INTEGERFLOAT 的符号:如果数字为 0,则返回 0;如果为负数,则返回 -1;如果为正数,则返回 1。

参数

名称

类型

描述

input

INTEGER | FLOAT

一个正数或负数。

返回

INTEGER(整数)

注意事项

sign(null) 返回 null

示例 19. sign()
查询
RETURN sign(-17), sign(0.1)

返回 -170.1 的符号。

结果
sign(-17) sign(0.1)

-1

1

行:1