---
title: "Numeric data types"
url: "https://docs.yugabyte.com/stable/api/ysql/datatypes/type_numeric/"
---

# Numeric data types

YSQL numeric data types represent integers, floating-point numbers, and fixed-point numbers of different value ranges and precisions.

## Synopsis

YSQL support integers, floating-point numbers, and fixed-point numbers of different value ranges and precisions.

| Data type          | Description                          | Min                                | Max                                |
|--------------------|--------------------------------------|------------------------------------|------------------------------------|
| `BIGINT`           | 8 bytes                              | -9,223,372,036,854,775,808         | 9,223,372,036,854,775,807          |
| `DEC`              | user-specified precision, exact      | &lt;131072 digits.16383 digits&gt; | &lt;131072 digits.16383 digits&gt; |
| `DECIMAL`          | user-specified precision, exact      | &lt;131072 digits.16383 digits&gt; | &lt;131072 digits.16383 digits&gt; |
| `DOUBLE PRECISION` | Inexact 64-bit floating point number | 15-digit precision                 | 15-digit precision                 |
| `FLOAT`            | Inexact 64-bit floating point number | variable                           | variable                           |
| `INTEGER`          | 4-byte integer                       | -2,147,483,648                     | 2,147,483,647                      |
| `INT`              | 4-byte integer                       | -2,147,483,648                     | 2,147,483,647                      |
| `NUMERIC`          | user-specified precision, exact      | &lt;131072 digits.16383 digits&gt; | &lt;131072 digits.16383 digits&gt; |
| `REAL`             | Inexact 32-bit floating point number | 6-digit precision                  | 6-digit precision                  |
| `SMALLINT`         | 2-byte integer                       | -32,768                            | 32,767                             |

## Integers

The following keywords are used to specify a column of type integer for different constraints, including its value ranges.

```ebnf
type_specification ::= SMALLINT | INT | INTEGER | BIGINT
integer_literal ::= [ + | - ] digit [ { digit | , } ... ]
```

- Columns of type `SMALLINT`, `INT`, `INTEGER`, or `BIGINT` can be part of the `PRIMARY KEY`.
- Values of different integer data types are comparable and convertible to one another.
- Values of integer data types are convertible but not comparable to floating point number.
- Currently, values of floating point data types are not convertible to integers. This restriction will be removed in the near future.

## Floating-point numbers

The following keywords are used to specify a column of floating-point types for different constraints including its value ranges.

```ebnf
type_specification ::= { FLOAT | DOUBLE PRECISION | REAL }
floating_point_literal ::= non_integer_fixed_point_literal | "NaN" | "Infinity" | "-Infinity"
```

- Columns of type `REAL`, `DOUBLE PRECISION`, and `FLOAT` can be part of the `PRIMARY KEY`.
- Values of different floating-point and fixed-point data types are comparable and convertible to one another.
- Conversion from floating-point types into `DECIMAL` will raise an error for the special values `NaN`, `Infinity`, and `-Infinity`.
- The ordering for special floating-point values is defined as (in ascending order): `-Infinity`, all negative values in order, all positive values in order, `Infinity`, and `NaN`.
- Values of non-integer numeric data types are neither comparable nor convertible to integer although integers are convertible to them. This restriction will be removed.

## Fixed-point numbers

The following keywords are used to specify a column of exact user-specified precision types for different constraints including its value ranges.

```ebnf
type_specification ::= { DEC | DECIMAL | NUMERIC }
fixed_point_literal ::= [ + | - ] { digit [ digit ...] '.' [ digit ...] | '.' digit [ digit ...] }
```

- Columns of type `DEC`, `DECIMAL`, and `NUMERIC` can be part of the `PRIMARY KEY`.
- Values of different floating-point and fixed-point data types are comparable and convertible to one another.
- Values of non-integer numeric data types are neither comparable nor convertible to integer although integers are convertible to them. This restriction will be removed.
