num2persian

package module
v1.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 4, 2026 License: MIT Imports: 4 Imported by: 0

README

num2persian

Go Reference GitHub

Go package for converting numbers to Persian (Farsi) text.

Key Features

  • Convert integers (int, int64) to Persian text
  • Support for very large numbers via big.Int (up to دسیلیون/decillion)
  • Floating-point conversion with auto or manual precision
  • Ordinal numbers (اول، دوم، سوم، ...)
  • Currency formatting (تومان/ریال)
  • Zero dependencies

Installation

go get github.com/pinkorca/num2persian

Quick Start

package main

import (
    "fmt"
    "github.com/pinkorca/num2persian"
)

func main() {
    fmt.Println(num2persian.Convert(1234))
    // Output: هزار و دویست و سی و چهار
}

Usage

Basic:

num2persian.Convert(0)      // صفر
num2persian.Convert(21)     // بیست و یک
num2persian.Convert(-500)   // منفی پانصد

Large numbers:

num2persian.Convert(1000000)       // یک میلیون
num2persian.Convert(1000000000)    // یک میلیارد

// Very large numbers
n := new(big.Int)
n.SetString("1000000000000000000000000000000000", 10)
num2persian.ConvertBigInt(n) // یک دسیلیون

Floats:

// Auto-detect precision
num2persian.ConvertString("12.5")   // دوازده ممیز پنج
num2persian.ConvertString("3.14")   // سه ممیز چهارده
num2persian.ConvertString("12.50")  // دوازده ممیز پنجاه

// Manual precision
num2persian.ConvertFloat(12.5, 1)   // دوازده ممیز پنج

Ordinals:

num2persian.ConvertOrdinal(1)   // اول
num2persian.ConvertOrdinal(2)   // دوم
num2persian.ConvertOrdinal(3)   // سوم
num2persian.ConvertOrdinal(21)  // بیست و یکم

Currency:

num2persian.ToToman(1500000)   // یک میلیون و پانصد هزار تومان
num2persian.ToRial(15000000)   // پانزده میلیون ریال

Supported Scales

Scale Persian Value
Thousand هزار 10³
Million میلیون 10⁶
Billion میلیارد 10⁹
Trillion تریلیون 10¹²
Quadrillion کوادریلیون 10¹⁵
Quintillion کوینتیلیون 10¹⁸
Sextillion سکستیلیون 10²¹
Septillion سپتیلیون 10²⁴
Octillion اکتیلیون 10²⁷
Nonillion نونیلیون 10³⁰
Decillion دسیلیون 10³³

License

This project is licensed under the MIT License.

Author

PinkOrca

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Documentation

Overview

Package num2persian converts numbers to their Persian (Farsi) text representation.

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func Convert

func Convert(n int64) string

Convert converts an integer to Persian text.

Example
package main

import (
	"fmt"

	"github.com/pinkorca/num2persian"
)

func main() {
	fmt.Println(num2persian.Convert(0))
	fmt.Println(num2persian.Convert(21))
	fmt.Println(num2persian.Convert(1234))
	fmt.Println(num2persian.Convert(-500))
}
Output:

صفر
بیست و یک
هزار و دویست و سی و چهار
منفی پانصد
Example (LargeNumbers)
package main

import (
	"fmt"

	"github.com/pinkorca/num2persian"
)

func main() {
	fmt.Println(num2persian.Convert(1000000))       // million
	fmt.Println(num2persian.Convert(1000000000))    // billion
	fmt.Println(num2persian.Convert(1000000000000)) // trillion
}
Output:

یک میلیون
یک میلیارد
یک تریلیون

func ConvertBigInt

func ConvertBigInt(n *big.Int) string

ConvertBigInt converts a big.Int to Persian text.

Example
package main

import (
	"fmt"
	"math/big"

	"github.com/pinkorca/num2persian"
)

func main() {
	n := new(big.Int)
	n.SetString("1000000000000000000000000000000000", 10) // 10^33 (decillion)
	fmt.Println(num2persian.ConvertBigInt(n))
}
Output:

یک دسیلیون

func ConvertFloat

func ConvertFloat(n float64, precision int) string

ConvertFloat converts a float64 to Persian text with specified decimal precision.

Example
package main

import (
	"fmt"

	"github.com/pinkorca/num2persian"
)

func main() {
	fmt.Println(num2persian.ConvertFloat(12.5, 1))
	fmt.Println(num2persian.ConvertFloat(3.14, 2))
	fmt.Println(num2persian.ConvertFloat(99.99, 2))
}
Output:

دوازده ممیز پنج
سه ممیز چهارده
نود و نه ممیز نود و نه

func ConvertInt

func ConvertInt(n int) string

ConvertInt converts an int to Persian text.

func ConvertOrdinal

func ConvertOrdinal(n int64) string

ConvertOrdinal converts an integer to Persian ordinal text.

Example
package main

import (
	"fmt"

	"github.com/pinkorca/num2persian"
)

func main() {
	fmt.Println(num2persian.ConvertOrdinal(1))
	fmt.Println(num2persian.ConvertOrdinal(2))
	fmt.Println(num2persian.ConvertOrdinal(3))
	fmt.Println(num2persian.ConvertOrdinal(21))
	fmt.Println(num2persian.ConvertOrdinal(100))
}
Output:

اول
دوم
سوم
بیست و یکم
صدم

func ConvertOrdinalInt

func ConvertOrdinalInt(n int) string

ConvertOrdinalInt converts an int to Persian ordinal text.

func ConvertString

func ConvertString(s string) (string, error)

ConvertString parses a string and converts it to Persian text.

Example
package main

import (
	"fmt"

	"github.com/pinkorca/num2persian"
)

func main() {
	result, _ := num2persian.ConvertString("1234567")
	fmt.Println(result)

	result2, _ := num2persian.ConvertString("42.5")
	fmt.Println(result2)
}
Output:

یک میلیون و دویست و سی و چهار هزار و پانصد و شصت و هفت
چهل و دو ممیز پنج

func RialToToman

func RialToToman(n int64) string

RialToToman converts Rial to Toman and returns Persian text.

func ToRial

func ToRial(n int64) string

ToRial converts a number to Persian text with "ریال" suffix.

Example
package main

import (
	"fmt"

	"github.com/pinkorca/num2persian"
)

func main() {
	fmt.Println(num2persian.ToRial(10000))
	fmt.Println(num2persian.ToRial(15000000))
}
Output:

ده هزار ریال
پانزده میلیون ریال

func ToRialInt

func ToRialInt(n int) string

ToRialInt converts an int to Persian text with "ریال" suffix.

func ToToman

func ToToman(n int64) string

ToToman converts a number to Persian text with "تومان" suffix.

Example
package main

import (
	"fmt"

	"github.com/pinkorca/num2persian"
)

func main() {
	fmt.Println(num2persian.ToToman(1000))
	fmt.Println(num2persian.ToToman(1500000))
}
Output:

هزار تومان
یک میلیون و پانصد هزار تومان

func ToTomanInt

func ToTomanInt(n int) string

ToTomanInt converts an int to Persian text with "تومان" suffix.

func TomanToRial

func TomanToRial(n int64) string

TomanToRial converts Toman to Rial and returns Persian text.

Types

type ParseError

type ParseError struct {
	Input string
}

ParseError is returned when ConvertString fails to parse the input.

func (*ParseError) Error

func (e *ParseError) Error() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL