处理整数
一个 整数 类型表示一个有符号的64位整数。
类型名称: int
最小值: -9223372036854775808
最大值: 9223372036854775807
整数语法
一个整数字面量包含一个或多个数字(0-9),可选地以
-开头以表示负数。
-0 等价于 0,并不是负数。
0
2
1254
-1254
将数据类型转换为整数
- string: 返回数字字符串的整数值 (
[0-9]) - 布尔值: 返回
1表示true或0表示false - duration: 返回持续时间中的纳秒数
- 时间: 返回等效的 纳秒纪元时间戳
- float: 在小数点处截断浮动值
- uint: 返回无符号整数的整数等价值
int(v: "123")
// 123
int(v: true)
// Returns 1
int(v: 1d3h24m)
// Returns 98640000000000
int(v: 2021-01-01T00:00:00Z)
// Returns 1609459200000000000
int(v: 12.54)
// Returns 12
在转换为整数之前先四舍五入浮点值
当将 浮点数 转换为整数时,
int() 截断 浮点值的小数部分(例如 12.54 转换为 12)。
您可能希望在转换之前将浮点值四舍五入到最接近的整数(12.54 转换为 13)。
要做到这一点:
- 导入
math包。 - 在将浮点值转换为整数之前,使用
math.round()来四舍五入。
import "math"
int(v: math.round(x: 12.54))
// Returns 13
将十六进制字符串转换为整数
将数字的十六进制字符串表示转换为整数:
- 导入
contrib/bonitoo-io/hex包。 - 使用
hex.int()将十六进制字符串转换为整数。
import "contrib/bonitoo-io/hex"
hex.int(v: "1e240")
// Returns 123456
将列转换为整数
Flux 允许您遍历 表流 中的行并将列转换为整数。
将 _value 列转换为整数,使用toInt() 函数。
toInt() 只作用于 _value 列。
data
|> toInt()
给定以下输入数据:
| 时间 | 值 (浮动) |
|---|---|
| 2021-01-01T00:00:00Z | 1.23 |
| 2021-01-01T02:00:00Z | 4.56 |
| 2021-01-01T03:00:00Z | 7.89 |
| 2021-01-01T04:00:00Z | 10.11 |
上面的例子返回:
| _时间 | _值 (int) |
|---|---|
| 2021-01-01T00:00:00Z | 1 |
| 2021-01-01T02:00:00Z | 4 |
| 2021年1月1日03:00:00Z | 7 |
| 2021-01-01T04:00:00Z | 10 |
将任何列转换为整数:
data
|> map(fn: (r) => ({ r with uid: int(v: r.uid) }))
给定以下输入数据:
| _时间 | 索引 (字符串) |
|---|---|
| 2021-01-01T00:00:00Z | 100010024 |
| 2021-01-01T02:00:00Z | 100050213 |
| 2021-01-01T03:00:00Z | 200130763 |
| 2021-01-01T04:00:00Z | 101420099 |
上面的例子返回:
| 时间 | 索引 (int) |
|---|---|
| 2021-01-01T00:00:00Z | 100010024 |
| 2021-01-01T02:00:00Z | 100050213 |
| 2021-01-01T03:00:00Z | 200130763 |
| 2021-01-01T04:00:00Z | 101420099 |
对整数进行操作
对整数进行算术运算
要进行像加、减、乘或除整数的操作,使用 Flux 算术运算符。 操作数必须是相同类型。 操作返回一个整数。
当使用整数操作数时,小数部分的结果会在小数点处被截断。
1 + 45
// Returns 46
1 - 45
// Returns -44
12 * 100
// Returns 1200
100 / 200
// Returns 0
10 ^ 2
// Returns 100
对整数执行按位操作
使用experimental/bitwise包 对整数进行按位操作。
import "experimental/bitwise"
bitwise.sand(a: 12, b: 21)
// Returns 4
bitwise.sor(a: 12, b: 21)
// Returns 29
bitwise.sxor(a: 12, b: 21)
// Returns 25
bitwise.sclear(a: 12, b: 21)
// Returns 8
bitwise.snot(a: 12)
// Returns -13
bitwise.slshift(a: 12, b: 21)
// Returns 25165824
bitwise.srshift(a: 21, b: 4)
// Returns 1
比较整数
使用 Flux comparison operators 来比较整数。操作数必须是相同类型。此操作将返回一个布尔值。
12345600 == 12345601
// Returns false
2 > -2
// Returns true