ClickHouse/docs/ru/data_types/float.md

2.7 KiB
Raw Blame History

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.