Project

si

0.01
Low commit activity in last 3 years
A long-lived project that still receives updates
Formats a number with SI prefix
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

SI

Formats a number with SI prefix (Metric prefix).

Installation

Add this line to your application's Gemfile:

gem 'si'

And then execute:

$ bundle

Or install it yourself as:

$ gem install si

Usage

si

Express a numeric value with SI prefix.

require 'si'

0.9.si            # '900m'
9.si              # '9'
98.si             # '98'
987.si            # '987'
9876.si           # '9.88k'
98765.si          # '98.8k'
987654.si         # '988k'
9876543.si        # '9.88M'
98765432.si       # '98.8M'
987654321.si      # '988M'
9876543210.si     # '9.88G'
98765432100.si    # '98.8G'
987654321000.si   # '988G'
9876543210000.si  # '9.88T'
# ...

Options

Option Default Description
:length 3 Number of digits
:base 1000 For binary prefix, set this to 1024 instead of default 1000
:min_exp -8 Down to yocto
:max_exp 8 Up to Yotta
9876543210000.si(:length => 5)  # '9.8765T'

# For convenience, a single Fixnum is recognized as :length value
9876543210000.si(5)             # '9.8765T'

si_byte

si_byte is simply a shorcut for number.si(:length => length, :base => 1024, :min_exp => 0) + 'B'.

13255342817.si_byte(3)  # '12.3GB'

SI module methods: convert / revert

SI.convert(9876543210000, :length => 5)  # '9.8765T'
SI.revert('100k', :base => 1024)         # 102400.0

Avoiding monkey-patching

Require 'si/minimal' instead to avoid monkey-patching numeric classes.

require 'si/minimal'

SI.convert(987654321, 3)  # 988M

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request