SI-Prefix Number
Type Registry
SI-Prefix Number
representation.numeric.si_number Human-readable number with SI/business notation suffix indicating magnitude. Common in dashboards, reports, and financial summaries. K=thousands, M=millions, B=billions, T=trillions. May include optional currency prefix ($, €, £) or sign (+/-).
Domain representation›numeric
Casts to DOUBLE
Scope Universal
Try it
CLI
$ finetype infer -i "12.2K"
→ representation.numeric.si_number DuckDB
Detect
SELECT finetype('12.2K');
-- → 'representation.numeric.si_number' Cast expression
CASE
WHEN regexp_extract(regexp_replace({col}, '^[\\$€£+-]', ''), '[KkMmBbTt]$') IN ('K','k')
THEN CAST(regexp_replace(regexp_replace({col}, '^[\\$€£+-]', ''), '[Kk]$', '') AS DOUBLE) * 1000
WHEN regexp_extract(regexp_replace({col}, '^[\\$€£+-]', ''), '[KkMmBbTt]$') IN ('M','m')
THEN CAST(regexp_replace(regexp_replace({col}, '^[\\$€£+-]', ''), '[Mm]$', '') AS DOUBLE) * 1000000
WHEN regexp_extract(regexp_replace({col}, '^[\\$€£+-]', ''), '[KkMmBbTt]$') IN ('B','b')
THEN CAST(regexp_replace(regexp_replace({col}, '^[\\$€£+-]', ''), '[Bb]$', '') AS DOUBLE) * 1000000000
WHEN regexp_extract(regexp_replace({col}, '^[\\$€£+-]', ''), '[KkMmBbTt]$') IN ('T','t')
THEN CAST(regexp_replace(regexp_replace({col}, '^[\\$€£+-]', ''), '[Tt]$', '') AS DOUBLE) * 1000000000000
END
Safe cast pipeline
-- Normalise and cast in one step
SELECT TRY_CAST(finetype_cast(my_column) AS DOUBLE) AS clean_value
FROM my_table
WHERE finetype(my_column) = 'representation.numeric.si_number'; JSON Schema
finetype schema representation.numeric.si_number {
"$id": "https://noon.sh/schemas/representation.numeric.si_number",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "Human-readable number with SI/business notation suffix indicating magnitude. Common in dashboards, reports, and financial summaries. K=thousands, M=millions, B=billions, T=trillions. May include optional currency prefix ($, €, £) or sign (+/-).",
"examples": [
"12.2K",
"1.5M",
"2.3B",
"$500K",
"-1.2M"
],
"pattern": "^[\\$€£+-]?\\d+\\.?\\d*[KkMmBbTt]$",
"title": "SI-Prefix Number",
"type": "string"
} Examples
12.2K1.5M2.3B$500K-1.2M Also known as
business_notationhuman_readable_numberabbreviated_number