Number and data formatting scenarios
Choose a focused guide
Choose one operation instead of treating every formatted number as the same kind of string:
| Task | Focused guide |
|---|---|
| Spell cardinal or ordinal numbers | Numbers in words and ordinals |
| Parse a localized number phrase | Parse number words |
| Inflect a noun and combine it with a count | Inflection and quantities |
| Format or parse storage and rates | Byte sizes and rates |
| Format or parse powers of 1000 | Metric numerals |
| Use Roman, compass, multiplier, tuple, or symbol helpers | Specialized formatting utilities |
Example
This program sets English culture and exercises representative formatting calls:
Program.cs
using System.Globalization;
using Humanizer;
var culture = CultureInfo.GetCultureInfo("en-US");
var estonian = CultureInfo.GetCultureInfo("et");
var simplifiedChinese = CultureInfo.GetCultureInfo("zh-CN");
CultureInfo.CurrentCulture = culture;
CultureInfo.CurrentUICulture = culture;
Console.WriteLine($"Words: {42.ToWords(culture)}");
Console.WriteLine($"Ordinal words: {21.ToOrdinalWords(culture)}");
Console.WriteLine($"Long ordinal: {2_147_483_651L.Ordinalize(culture)}");
Console.WriteLine($"Indian scale: {1_000_000_000L.ToIndianWords(IndianScaleStyle.CroreBased)}");
Console.WriteLine($"Fraction: {1.25m.Fractionalize(5, 0m)}");
Console.WriteLine($"Financial: {10L.ToChineseFinancialCharacters(simplifiedChinese)}");
Console.WriteLine($"Estonian scale: {1_000_000_000_000_000_000L.ToWords(estonian)}");
Console.WriteLine($"Long max: {long.MaxValue.ToWords(estonian)}");
Console.WriteLine($"Long min: {long.MinValue.ToWords(estonian)}");
Console.WriteLine($"Roman: {14.ToRoman()}");
Output
Words: forty-two
Ordinal words: twenty-first
Long ordinal: 2147483651st
Indian scale: one hundred crore
Fraction: 1 1/4
Financial: 壹拾
Estonian scale: triljon
Long max: üheksa triljonit kakssada kakskümmend kolm biljardit kolmsada seitsekümmend kaks biljonit kolmkümmend kuus miljardit kaheksasada viiskümmend neli miljonit seitsesada seitsekümmend viis tuhat kaheksasada seitse
Long min: miinus üheksa triljonit kakssada kakskümmend kolm biljardit kolmsada seitsekümmend kaks biljonit kolmkümmend kuus miljardit kaheksasada viiskümmend neli miljonit seitsesada seitsekümmend viis tuhat kaheksasada kaheksa
Roman: XIV
Focused guides separate the typed model, parsing contract, localization behavior, and failure modes. Pass CultureInfo directly where an overload permits it; scope both ambient cultures for APIs without a culture argument.
Keep the typed number
Do not persist humanized number text as the numeric source of truth. ByteSize uses binary multiples, metric numerals use decimal powers, number-word parsing has locale-specific grammar, and Roman numerals have a strict range. Keep the typed value and choose a parser only for an input format the application explicitly accepts.
Related guides and API
- Numbers in words and ordinals
- Byte sizes and rates
- Localization and extensibility
- NumberToWordsExtension API
- OrdinalizeExtensions API
- ILongOrdinalizer API
- FractionalizeExtensions API
- ChineseFinancialNumeralExtensions API
- WordForm API
- RomanNumeralExtensions API
- ByteSize API
- ByteSizeUnitSystem API
- WordsToNumberExtension API
- WordsToDecimalNumberExtension API
- IWordsToDecimalNumberConverter API
- ByteSizeExtensions API
- ByteRate API
- MetricNumeralExtensions API
- MetricNumeralFormats API
- HeadingExtensions API
- NumberToNumberExtensions API
- TupleizeExtensions API
- TimeUnitToSymbolExtensions API
- EnglishArticle API