处理浮点数
浮点数类型表示一个 IEEE-754 64 位浮点数。
类型名称: float
浮点数语法
浮点数文字量包含一个十进制整数、一个小数点和一个十进制小数。
0.0
123.4
-123.456
科学计数法
Flux 不支持科学计数法浮点数文字量语法。但是,您可以使用 float()
将科学计数法字符串转换为浮点数类型。
1.23456e+78
// Error: error @1:8-1:9: undefined identifier e
float(v: "1.23456e+78")
// Returns 1.23456e+78 (float)
无穷大
Flux 不支持无穷大浮点数文字量语法(+Inf
和 -Inf
)。但是,您可以使用 float()
将无穷大字符串转换为浮点数类型。
+Inf
// Error: error @1:2-1:5: undefined identifier Inf
float(v: "+Inf")
// Returns +Inf (float)
非数字
Flux 不支持非数字 (NaN) 浮点数文字量语法。但是,您可以使用 float()
将 NaN 字符串转换为浮点数类型。
NaN
// Error: error @1:2-1:5: undefined identifier NaN
float(v: "NaN")
// Returns NaN (float)
将数据类型转换为浮点数
使用 float()
函数 将以下基本类型转换为浮点数
- 字符串:必须是数字字符串或科学计数法
- 布尔值:
true
转换为1.0
,false
转换为0.0
- int
- uint
float(v: "1.23")
// 1.23
float(v: true)
// Returns 1.0
float(v: 123)
// Returns 123.0
将列转换为浮点数
Flux 允许您在表流中迭代行并将列转换为浮点数。
要将 _value
列转换为浮点数,请使用 toFloat()
函数。
toFloat()
仅对 _value
列进行操作。
data
|> toFloat()
给定以下输入数据
_time | _value (int) |
---|---|
2021-01-01T00:00:00Z | 10 |
2021-01-01T02:00:00Z | 20 |
2021-01-01T03:00:00Z | 30 |
2021-01-01T04:00:00Z | 40 |
上面的示例返回
_time | _value (float) |
---|---|
2021-01-01T00:00:00Z | 10.0 |
2021-01-01T02:00:00Z | 20.0 |
2021-01-01T03:00:00Z | 30.0 |
2021-01-01T04:00:00Z | 40.0 |
要将任何列转换为浮点数:
data
|> map(fn: (r) => ({ r with index: float(v: r.index) }))
给定以下输入数据
_time | index (int) |
---|---|
2021-01-01T00:00:00Z | 1 |
2021-01-01T02:00:00Z | 2 |
2021-01-01T03:00:00Z | 3 |
2021-01-01T04:00:00Z | 4 |
上面的示例返回
_time | index (float) |
---|---|
2021-01-01T00:00:00Z | 1.0 |
2021-01-01T02:00:00Z | 2.0 |
2021-01-01T03:00:00Z | 3.0 |
2021-01-01T04:00:00Z | 4.0 |
对浮点数执行操作
对浮点数执行算术运算
要执行诸如加法、减法、乘法或除法浮点数值之类的操作,请使用 Flux 算术运算符。操作数必须是相同的类型。
1.23 + 45.67
// Returns 46.9
1.23 - 45.67
// Returns -44.440000000000005
float(v: "12345e+67") * 100.0
// Returns 1.2345000000000001e+73
144.0 / 12.0
// Returns 12.0
10.0 ^ 2.0
// Returns 100.0
浮点运算中固有的舍入误差
为了将无限数量的实数值拟合到有限数量的位中,计算机系统必须在算术运算中舍入浮点数值。这会导致某些运算中出现小的舍入误差。
比较浮点数值
使用 Flux 比较运算符 来比较浮点数值。操作数必须是相同的类型。该操作返回一个浮点数。
12345600.0 == float(v: "1.23456e+07")
// Returns true
1.2 > -2.1
// Returns true
舍入浮点数值
- 导入
math
包。 - 使用
math.round()
舍入到最接近的整数。
import "math"
math.round(x: 1.54)
// Returns 2.0
Flux math 包
使用 math
包 对浮点数值执行操作。
此页面是否对您有帮助?
感谢您的反馈!