ANN: Human-friendly numeric output (NumericIO)

NumericIO provides fine control over numeric output: Scientific/Engineering/SI-notation +UTF8:

Basic Usage

Create a convenience formatting function:

using NumericIO
SI(x) = formatted(x, :SI, ndigits=4)

Then use said function:

SI(3.14159e-9) # => "3.142n"
SI(2.71828e12) # => "2.718T"

For a more traditional scientific output, use the following:

formatted(3.14159e-8, :SCI, ndigits=3) # => "3.14×10⁻⁸"

Or instead restrict the output to engineering notation (limiting to powers divisible by 3):

formatted(3.14159e-8, :ENG, ndigits=3) # => "31.4×10⁻⁹"

NOTE:* I personally find numeric output easier to read in engineering notation as opposed to scientific notation.

More Advanced Usage

Fix the output to a certain floating point position:

fmt = NumericIO.IOFormattingReal(:SI, NumericIO.Charset{:UTF8}, ndigits=4, decpos=-12, decfloating=false)
SI(x) = formatted(x, fmt)

#Sample output:
SI(3.14159e-11) # => "31.42p"
SI(2.71828e-7) # => "271800p"

For more examples of advanced usage, consult the README.md page: GitHub - ma-laforge/NumericIO.jl: Fine control over numeric output: Scientific/Engineering/SI-notation +UTF8.

Note that the low level functions operate on IO streams, and make use of Julia’s built-in GRISU algorithms.

12 Likes