Documentation

处理浮点数

A float 类型表示一个 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() 函数 将以下 基本类型 转换为浮点数:

  • string: 必须是一个数字字符串或 科学计数法
  • 布尔值: true 转换为 1.0, false 转换为 0.0
  • 整数
  • 无符号整数
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()
给定以下输入数据:
_时间_值 (int)
2021-01-01T00:00:00Z10
2021-01-01T02:00:00Z20
2021-01-01T03:00:00Z30
2021年01月01日 04:00:0040
上面的例子返回:
时间(浮动)
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) }))
给定以下输入数据:
时间索引 (int)
2021-01-01T00:00:00Z1
2021-01-01T02:00:00Z2
2021-01-01T03:00:00Z3
2021-01-01T04:00:00Z4
上面的例子返回:
_时间索引 (浮点数)
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对浮点值进行操作。



Flux的未来

Flux 正在进入维护模式。您可以像现在一样继续使用它,而无需对您的代码进行任何更改。

阅读更多

InfluxDB 3 开源版本现已公开Alpha测试

InfluxDB 3 Open Source is now available for alpha testing, licensed under MIT or Apache 2 licensing.

我们将发布两个产品作为测试版的一部分。

InfluxDB 3 核心,是我们新的开源产品。 它是一个用于时间序列和事件数据的实时数据引擎。 InfluxDB 3 企业版是建立在核心基础之上的商业版本,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度安全性。

有关如何开始的更多信息,请查看: