Float32, Float64

اعداد Float.

Type های float در ClickHouse مشابه C می باشد:

  • Float32 - float
  • Float64 - double

توصیه می کنیم که داده ها را هرزمان که امکان پذیره است به جای float به صورت int ذخیره کنید. برای مثال: تبدیل دقت اعداد به یک مقدار int، مثل سرعت page load در قالب میلی ثانیه.

استفاده از اعداد Float

  • محاسبات با اعداد با Float ممکن است خطای round شدن را ایجاد کنند.
SELECT 1 - 0.9
┌───────minus(1, 0.9)─┐
│ 0.09999999999999998 │
└─────────────────────┘
  • نتایج محاسبات بسته به متد محاسباتی می باشد (نوع processor و معماری سیستم).
  • محاسبات Float ممکن اسن نتایجی مثل infinity (inf) و "Not-a-number" (Nan) داشته باشد. این در هنگام پردازش نتایج محاسبات باید مورد توجه قرار گیرد.
  • هنگام خواندن اعداد float از سطر ها، نتایج ممکن است نزدیک به اعداد machine-representable نباشد.

NaN و Inf

در مقابل استاندارد SQL، ClickHouse از موارد زیر مربوط به اعداد float پشتیبانی می کند:

  • Inf – Infinity.
SELECT 0.5 / 0
┌─divide(0.5, 0)─┐
│            inf │
└────────────────┘
  • -Inf – Negative infinity.
SELECT -0.5 / 0
┌─divide(-0.5, 0)─┐
│            -inf │
└─────────────────┘
  • NaN – Not a number.
SELECT 0 / 0
┌─divide(0, 0)─┐
│          nan │
└──────────────┘

قوانین مربوط به مرتب سازی Nan را در بخش ORDER BY clause ببینید.