2018-10-17 11:43:36 +00:00
|
|
|
|
# Float32, Float64
|
|
|
|
|
|
|
|
|
|
[浮点数](https://en.wikipedia.org/wiki/IEEE_754)。
|
|
|
|
|
|
2018-10-19 08:02:26 +00:00
|
|
|
|
类型与以下 C 语言中类型是相同的:
|
2018-10-17 11:43:36 +00:00
|
|
|
|
|
|
|
|
|
- `Float32` - `float`
|
2018-12-25 15:25:43 +00:00
|
|
|
|
- `Float64` - `double`
|
2018-10-17 11:43:36 +00:00
|
|
|
|
|
2018-10-19 08:02:26 +00:00
|
|
|
|
我们建议您尽可能以整数形式存储数据。例如,将固定精度的数字转换为整数值,例如货币数量或页面加载时间用毫秒为单位表示
|
2018-10-17 11:43:36 +00:00
|
|
|
|
|
|
|
|
|
## 使用浮点数
|
|
|
|
|
|
|
|
|
|
- 对浮点数进行计算可能引起四舍五入的误差。
|
|
|
|
|
|
2018-10-19 08:02:26 +00:00
|
|
|
|
```sql
|
|
|
|
|
SELECT 1 - 0.9
|
|
|
|
|
```
|
2018-10-17 11:43:36 +00:00
|
|
|
|
|
2018-10-19 08:02:26 +00:00
|
|
|
|
```
|
|
|
|
|
┌───────minus(1, 0.9)─┐
|
|
|
|
|
│ 0.09999999999999998 │
|
|
|
|
|
└─────────────────────┘
|
|
|
|
|
```
|
2018-10-17 11:43:36 +00:00
|
|
|
|
|
2018-10-19 08:02:26 +00:00
|
|
|
|
- 计算的结果取决于计算方法(计算机系统的处理器类型和体系结构)
|
2018-10-17 11:43:36 +00:00
|
|
|
|
|
2018-10-19 08:02:26 +00:00
|
|
|
|
- 浮点计算结果可能是诸如无穷大(`INF`)和"非数字"(`NaN`)。对浮点数计算的时候应该考虑到这点。
|
2018-10-17 11:43:36 +00:00
|
|
|
|
|
|
|
|
|
- 当一行行阅读浮点数的时候,浮点数的结果可能不是机器最近显示的数值。
|
|
|
|
|
|
2018-10-19 08:02:26 +00:00
|
|
|
|
## NaN and Inf
|
2018-10-17 11:43:36 +00:00
|
|
|
|
|
2018-10-19 08:02:26 +00:00
|
|
|
|
与标准SQL相比,ClickHouse 支持以下类别的浮点数:
|
2018-10-17 11:43:36 +00:00
|
|
|
|
|
2018-10-19 08:02:26 +00:00
|
|
|
|
- `Inf` – 正无穷
|
2018-10-17 11:43:36 +00:00
|
|
|
|
|
2018-10-19 08:02:26 +00:00
|
|
|
|
```sql
|
|
|
|
|
SELECT 0.5 / 0
|
|
|
|
|
```
|
2018-10-17 11:43:36 +00:00
|
|
|
|
|
2018-10-19 08:02:26 +00:00
|
|
|
|
```
|
|
|
|
|
┌─divide(0.5, 0)─┐
|
|
|
|
|
│ inf │
|
|
|
|
|
└────────────────┘
|
|
|
|
|
```
|
2018-10-17 11:43:36 +00:00
|
|
|
|
|
2018-10-19 08:02:26 +00:00
|
|
|
|
- `-Inf` – 负无穷
|
2018-10-17 11:43:36 +00:00
|
|
|
|
|
2018-10-19 08:02:26 +00:00
|
|
|
|
```sql
|
|
|
|
|
SELECT -0.5 / 0
|
|
|
|
|
```
|
2018-10-17 11:43:36 +00:00
|
|
|
|
|
2018-10-19 08:02:26 +00:00
|
|
|
|
```
|
|
|
|
|
┌─divide(-0.5, 0)─┐
|
|
|
|
|
│ -inf │
|
|
|
|
|
└─────────────────┘
|
|
|
|
|
```
|
2018-10-17 11:43:36 +00:00
|
|
|
|
|
2018-10-19 08:02:26 +00:00
|
|
|
|
- `NaN` – 非数字
|
2018-10-17 11:43:36 +00:00
|
|
|
|
|
2018-10-19 08:02:26 +00:00
|
|
|
|
```
|
|
|
|
|
SELECT 0 / 0
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
┌─divide(0, 0)─┐
|
|
|
|
|
│ nan │
|
|
|
|
|
└──────────────┘
|
|
|
|
|
```
|
2018-10-17 11:43:36 +00:00
|
|
|
|
|
2018-12-25 15:25:43 +00:00
|
|
|
|
可以在 [ORDER BY 子句](../query_language/select.md) 查看更多关于 ` NaN` 排序的规则。
|