2.7 KiB
Float32, Float64
Типы эквивалентны типам языка С:
Float32
-float
;Float64
-double
.
Из соображений производительности рекомендуем хранить данные в целочисленноми виде всегда, когда это возможно. Например, переводите в целочисленные значения числа с фиксированной точностью, такие как денежные суммы или времена загрузки страниц в миллисекундах.
Особенности использования чисел с плавающей точкой
-
При переводе из строки в число с плавающей точкой возможна ошибка округления.
SELECT 1 - 0.9
┌───────minus(1, 0.9)─┐ │ 0.09999999999999998 │ └─────────────────────┘
По этой причине могут некорректно работать операции сравнения вычислений.
-
Результат вычисления зависит от метода вычисления (типа процессора и архитектуры вычислительной системы).
-
При вычислениях с плавающей точкой возможно появление таких категорий числа как бесконечность (
Inf
) и "не число" (NaN
). Это необходимо учитывать при обработке результатов вычислений.
NaN и Inf
В отличие от стандартного SQL, ClickHouse поддерживает следующие категории чисел с плавающей точкой:
Inf
- бесконечность.SELECT 0.5 / 0
┌─divide(0.5, 0)─┐ │ inf │ └────────────────┘
-Inf
- отрицательная бесконечность;SELECT -0.5 / 0
┌─divide(-0.5, 0)─┐ │ -inf │ └─────────────────┘
NaN
- не число.SELECT 0 / 0
Смотрите правила сортировки┌─divide(0, 0)─┐ │ nan │ └──────────────┘
NaN
в разделе Секция ORDER BY.