数学函数 - 数字

数字数学函数仅对数字表达式进行运算,如果对任何其他值使用,将返回错误。另请参见 数学运算符.

示例图

以下图用于下面的示例

graph numeric functions

要重新创建图,请对空的 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)

描述

返回 INTEGERFLOAT 的绝对值。

参数

名称

类型

描述

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。

结果
ceil(0.1)

1.0

行:1

floor()

详细信息

语法

floor(input)

描述

返回小于或等于数字且等于 INTEGER 的最大 FLOAT

参数

名称

类型

描述

input

FLOAT

要四舍五入到最近更低整数的值。

返回值

FLOAT

注意事项

floor(null) 返回 null

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

返回 0.9 的 floor。

结果
floor(0.9)

0.0

行:1

isNaN()

详细信息

语法

isNaN(input)

描述

返回给定的 INTEGERFLOAT 是否为 NaN。

参数

名称

类型

描述

input

INTEGER | FLOAT

要与 NaN 进行比较的数字值。

返回值

BOOLEAN

注意事项

isNaN(null) 返回 null

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

返回 true,因为值为 NaN

结果
isNaN(0/0.0)

true

行:1

rand()

详细信息

语法

rand()

描述

返回 0(含)到 1(不含)范围内的随机 FLOAT

返回值

FLOAT

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

返回一个随机数。

结果
rand()

0.5460251846326871

行:1

round()

详细信息

语法

round(value[, precision, mode])

描述

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

参数

名称

类型

描述

value

FLOAT

要四舍五入的值。

precision

INTEGER | FLOAT

舍入精度。

mode

STRING

精度舍入模式(UPDOWNCEILINGFLOORHALF_UPHALF_DOWNHALF_EVEN)。

返回值

FLOAT

模式
mode 描述

UP

远离零舍入。

DOWN

向零舍入。

CEILING

向正无穷大舍入。

FLOOR

向负无穷大舍入。

HALF_UP

向给定精度的最近值舍入,其中平局始终远离零舍入。

HALF_DOWN

向给定精度的最近值舍入,其中平局始终向零舍入。

HALF_EVEN

向给定精度的最近值舍入,其中平局始终舍入到偶数邻居。

注意事项

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

如果任何输入参数为 null,则 round() 返回 null

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

返回 3.0

结果
round(3.141592)

3.0

行:1

示例 7. 负数的 round(),平局
查询
RETURN round(-1.5)

平局向正无穷大舍入,因此返回 -1.0

结果
round(-1.5)

-1.0

行:1

带有精度的 round()

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

返回 3.142

结果
round(3.141592, 3)

3.142

行:1

示例 9. 精度为 0 且平局的 round()
查询
RETURN round(-1.5, 0)

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

结果
round(-1.5, 0)

-1.0

行:1

示例 10. 精度为 1 且平局的 round()
查询
RETURN round(-1.55, 1)

默认情况下,平局时远离零舍入,因此返回 -1.6

结果
round(-1.55, 1)

-1.6

行:1

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

示例 11. 带有精度和 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

示例 12. 带有精度和 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

示例 13. 带有精度和 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

示例 14. 带有精度和 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

示例 15. 带有精度和 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

示例 16. 带有精度和 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

示例 17. 带有精度和 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

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

返回-170.1的符号。

结果
sign(-17) sign(0.1)

-1

1

行:1