What are the differences between FLOAT (FLOAT64) vs NUMERIC data types in BigQuery SQL and when to use each?

While they both can express decimals, they have some important differences in terms of precision and performance.

๐ท FLOAT (FLOAT64): a double-precision floating-point number.

Pros:

- can express a large array of values, both large and very very small.

- uses 8 logical bytes (half as compared to NUMERIC)

- calculations can be faster

- we have literals for not-a-number `NaN`

, minus/plus infinity

Cons:

- it's an approximate data type, yielding potential rounding errors

Use cases

- queries that can tolerate small differences i.e. how many kg of chocolate we eat per capita per year

- scientific calculations with very large numbers

๐ท NUMERIC: a fixed-point decimal type for up to 38 digits, 9 decimal places, alias for DECIMAL

Pros:

- exact storage avoiding rounding errors, no loss of precision

Cons:

- uses 16 logical bytes

- calculations can be slower

When to use it:

- anywhere every single decimal digit matters, like finance or sending a spaceship to another planet

P.S. There's also BIGNUMERIC (alias for BIGDECIMAL) if you need even larger range, but that takes 32 logical bytes.

*Found it useful? Subscribe to my Analytics newsletter at* *notjustsql.com**.*