> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> ClickHouse의 부동소수점 데이터 타입 문서: Float32, Float64 및 BFloat16

# Float32 | Float64 | BFloat16 타입

<Note>
  정확한 계산이 필요하고, 특히 높은 정밀도가 요구되는 금융 또는 비즈니스 데이터를 다루는 경우에는 [Decimal](/ko/reference/data-types/decimal) 사용을 고려하십시오.

  아래 예시에서 보듯이 [부동소수점 수](https://en.wikipedia.org/wiki/IEEE_754)는 부정확한 결과를 초래할 수 있습니다.

  ```sql theme={null}
  CREATE TABLE IF NOT EXISTS float_vs_decimal
  (
     my_float Float64,
     my_decimal Decimal64(3)
  )
  ENGINE=MergeTree
  ORDER BY tuple();

  # 소수점 이하 2자리 난수 1,000,000개를 생성하여 float와 decimal로 저장합니다
  INSERT INTO float_vs_decimal SELECT round(randCanonical(), 3) AS res, res FROM system.numbers LIMIT 1000000;
  ```

  ```sql theme={null}
  SELECT sum(my_float), sum(my_decimal) FROM float_vs_decimal;

  ┌──────sum(my_float)─┬─sum(my_decimal)─┐
  │ 499693.60500000004 │      499693.605 │
  └────────────────────┴─────────────────┘

  SELECT sumKahan(my_float), sumKahan(my_decimal) FROM float_vs_decimal;

  ┌─sumKahan(my_float)─┬─sumKahan(my_decimal)─┐
  │         499693.605 │           499693.605 │
  └────────────────────┴──────────────────────┘
  ```
</Note>

ClickHouse와 C에서 대응되는 타입은 다음과 같습니다.

* `Float32` — `float`.
* `Float64` — `double`.

ClickHouse의 Float 타입에는 다음과 같은 Aliases가 있습니다.

* `Float32` — `FLOAT`, `REAL`, `SINGLE`.
* `Float64` — `DOUBLE`, `DOUBLE PRECISION`.

테이블을 생성할 때 부동소수점 수에 대한 숫자 매개변수를 지정할 수 있지만(예: `FLOAT(12)`, `FLOAT(15, 22)`, `DOUBLE(12)`, `DOUBLE(4, 18)`), ClickHouse는 이를 무시합니다.

<div id="using-floating-point-numbers">
  ## 부동소수점 수 사용
</div>

* 부동소수점 수를 사용한 계산에서는 반올림 오류가 발생할 수 있습니다.

```sql theme={null}
SELECT 1 - 0.9

┌───────minus(1, 0.9)─┐
│ 0.09999999999999998 │
└─────────────────────┘
```

* 계산 결과는 계산 방식(컴퓨터 시스템의 프로세서 유형과 아키텍처)에 따라 달라집니다.
* 부동소수점 계산에서는 무한대(`Inf`) 및 "숫자가 아님"(`NaN`)과 같은 값이 나올 수 있습니다. 계산 결과를 처리할 때는 이 점을 고려해야 합니다.
* 텍스트에서 부동소수점 수를 파싱할 때, 결과가 기계에서 표현 가능한 가장 가까운 숫자가 아닐 수 있습니다.

<div id="nan-and-inf">
  ## NaN 및 Inf
</div>

표준 SQL과 달리 ClickHouse는 다음과 같은 부동소수점 수 범주를 지원합니다.

* `Inf` – 무한대입니다.

```sql theme={null}
SELECT 0.5 / 0

┌─divide(0.5, 0)─┐
│            inf │
└────────────────┘
```

* `-Inf` — 음의 무한대입니다.

```sql theme={null}
SELECT -0.5 / 0

┌─divide(-0.5, 0)─┐
│            -inf │
└─────────────────┘
```

* `NaN` — 숫자가 아닙니다.

```sql theme={null}
SELECT 0 / 0

┌─divide(0, 0)─┐
│          nan │
└──────────────┘
```

[ORDER BY 절](/ko/reference/statements/select/order-by) 섹션에서 `NaN` 정렬 규칙을 확인하십시오.

<div id="bfloat16">
  ## BFloat16
</div>

`BFloat16`은 8비트 지수부, 1비트 부호, 7비트 가수로 구성된 16비트 부동소수점 데이터 타입입니다.
머신 러닝 및 AI 애플리케이션에 유용합니다.

ClickHouse는 `Float32`와 `BFloat16` 간의 변환을 지원하며,
이 변환은 [`toFloat32()`](/ko/reference/functions/regular-functions/type-conversion-functions#toFloat32) 또는 [`toBFloat16`](/ko/reference/functions/regular-functions/type-conversion-functions#toBFloat16) 함수를 사용해 수행할 수 있습니다.

<Note>
  대부분의 다른 연산은 지원되지 않습니다.
</Note>
