Packages
Number formatting, currency and financial math for Elixir. Format currency and numbers for 22 locales, convert numbers to words and Roman numerals, calculate compound interest, EMI, VAT and income tax, run statistics, validate credit cards, and convert units. One zero-config dependency.
Current section
Files
Jump to
Current section
Files
README.md
# Getting Started with NumberF
NumberF is a powerful utility library for Elixir that makes working with numbers easy and intuitive. This guide will help you get started with the most common features.
## Installation
Add `number_f` to your list of dependencies in `mix.exs`:
```elixir
def deps do
[
{:number_f, "~> 0.0.5"}
]
end
```
Then run:
```bash
mix deps.get
```
## Basic Usage
Once installed, you can start using NumberF's functionality by importing or accessing it directly:
```elixir
# In your module
defmodule MyApp.SomeModule do
# You can use NumberF functions directly
def format_price(price) do
NumberF.currency(price, "USD")
end
end
```
## Core Feature Areas
### 1. Number Formatting
```elixir
# Format as currency
NumberF.currency(1234.567) # => "ZMW 1,234.57"
NumberF.currency(1234.567, "USD", 2) # => "USD 1,234.57"
# Format with commas
NumberF.comma_separated(1234567.89) # => "1,234,567.89"
# Custom delimiters
NumberF.number_to_delimited(1234567.89, delimiter: ".", separator: ",") # => "1.234.567,89"
```
### 2. Number to Text Conversion
```elixir
# Convert numbers to words
NumberF.to_words(20.0) # => "Twenty Kwacha and zero Ngwee"
NumberF.to_words(42.75, "Dollars", "Cents") # => "Forty Two Dollars And Seventy Five Cents"
# Roman numerals
NumberF.to_roman(1999) # => "MCMXCIX"
NumberF.from_roman("MCMXCIX") # => 1999
# Ordinals
NumberF.ordinal(21) # => "21st"
```
### 3. Financial Calculations
```elixir
# Simple interest
NumberF.simple_interest(1000, 0.05, 2) # => 100.0
# Compound interest
NumberF.compound_interest(1000, 0.05, 2) # => 102.5
NumberF.compound_interest(1000, 0.05, 2, 12) # => 104.94 (monthly compounding)
# EMI calculation
NumberF.calculate_emi(100000, 0.10, 12) # => 8791.59
```
### 4. Statistical Functions
```elixir
# Basic statistics
NumberF.mean([1, 2, 3, 4, 5]) # => 3.0
NumberF.median([1, 3, 5, 7, 9]) # => 5
NumberF.mode([1, 2, 2, 3, 3, 3, 4]) # => [3]
NumberF.standard_deviation([2, 4, 4, 4, 5, 5, 7, 9]) # => 2.0
```
### 5. Internationalization
```elixir
# Format with locale
NumberF.format_number(1234567.89, "en-US") # => "1,234,567.89"
NumberF.format_number(1234567.89, "fr-FR") # => "1 234 567,89"
# Currency with locale
NumberF.format_currency(1234.56, "en-US") # => "$1,234.56"
NumberF.format_currency(1234.56, "fr-FR") # => "1 234,56 €"
```
## Advanced Features
NumberF includes many advanced features for specialized use cases:
- Tax calculations (VAT, sales tax, income tax)
- Precision handling with multiple rounding strategies
- Unit conversion between metric and imperial
- Date calculations (business days, payment terms)
- Phone number formatting
- Credit card validation
- Memory size humanization
Check the module-specific documentation for details on these advanced features.
## Getting Help
If you need help with NumberF, you can:
1. Read the [full documentation on HexDocs](https://hexdocs.pm/number_f)
2. Visit the [GitHub repository](https://github.com/jamesnjovu/elixir_number_functions)
3. Open an issue if you encounter a problem or have a feature request
We hope NumberF makes your Elixir development experience more enjoyable!