文档文档

处理浮点数

浮点数类型表示一个 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.0false 转换为 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:00Z10
2021-01-01T02:00:00Z20
2021-01-01T03:00:00Z30
2021-01-01T04:00:00Z40
上面的示例返回
_time_value (float)
2021-01-01T00:00:00Z10.0
2021-01-01T02:00:00Z20.0
2021-01-01T03:00:00Z30.0
2021-01-01T04:00:00Z40.0

要将任何列转换为浮点数:

  1. 使用 map() 迭代并重写行。
  2. 使用 float() 将列值转换为浮点数。
data
    |> map(fn: (r) => ({ r with index: float(v: r.index) }))
给定以下输入数据
_timeindex (int)
2021-01-01T00:00:00Z1
2021-01-01T02:00:00Z2
2021-01-01T03:00:00Z3
2021-01-01T04:00:00Z4
上面的示例返回
_timeindex (float)
2021-01-01T00:00:00Z1.0
2021-01-01T02:00:00Z2.0
2021-01-01T03:00:00Z3.0
2021-01-01T04:00:00Z4.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

舍入浮点数值

  1. 导入 math
  2. 使用 math.round() 舍入到最接近的整数。
import "math"

math.round(x: 1.54)
// Returns 2.0

Flux math 包

使用 math 对浮点数值执行操作。


此页面是否对您有帮助?

感谢您的反馈!


Flux 的未来

Flux 即将进入维护模式。您可以继续像目前一样使用它,而无需对代码进行任何更改。

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。更快扩展。

获取更新

InfluxDB 3 Core 是一个开源、高速、近数据引擎,可实时收集和处理数据,并将其持久化到本地磁盘或对象存储。InfluxDB 3 Enterprise 构建在 Core 的基础上,增加了高可用性、读取副本、增强的安全性以及数据压缩,从而实现更快的查询和优化的存储。InfluxDB 3 Enterprise 的免费层可供非商业家庭或业余爱好者使用。

有关更多信息,请查看