MissingH-0.16.0: ContentsIndex
MissingH.Quantity
Portabilityportable
Stabilityprovisional
MaintainerJohn Goerzen <jgoerzen@complete.org>
Description

Tools for rendering sizes

Written by John Goerzen, jgoerzen@complete.org

Synopsis
renderNum :: (Ord a, Real a) => SizeOpts -> Int -> a -> String
quantifyNum :: (Ord a, Real a, Floating b, Ord b) => SizeOpts -> a -> (b, Char)
data SizeOpts = SizeOpts {
base :: Int
powerIncr :: Int
firstPower :: Int
suffixes :: String
}
binaryOpts :: SizeOpts
siOpts :: SizeOpts
Documentation
renderNum
:: (Ord a, Real a)
=> SizeOpts
-> IntPrecision of the result
-> aThe number to examine
-> String

Render a number into a string, based on the given quantities. This is useful for displaying quantities in terms of bytes or in SI units. Give this function the SizeOpts for the desired output, and a precision (number of digits to the right of the decimal point), and you get a string output.

Here are some examples:

 MissingH.Quantity> renderNum binaryOpts 0 1048576
 "1M"
 MissingH.Quantity> renderNum binaryOpts 2 10485760
 "10.00M"
 MissingH.Quantity> renderNum binaryOpts 3 1048576
 "1.000M"
 MissingH.Quantity> renderNum binaryOpts 3 1500000
 "1.431M"
 MissingH.Quantity> renderNum binaryOpts 2 (1500 ** 3)
 "3.14G"
 MissingH.Quantity> renderNum siOpts 2 1024
 "1.02k"
 MissingH.Quantity> renderNum siOpts 2 1048576
 "1.05M"
 MissingH.Quantity> renderNum siOpts 2 0.001
 "1.00m"
 MissingH.Quantity> renderNum siOpts 2 0.0001
 "100.00u"

If you want more control over the output, see quantifyNum.

quantifyNum :: (Ord a, Real a, Floating b, Ord b) => SizeOpts -> a -> (b, Char)
Takes a number and returns a new (quantity, suffix) combination. The space character is used as the suffix for items around 0.
data SizeOpts
The options for quantifyNum and renderNum
Constructors
SizeOpts
base :: IntThe base from which calculations are made
powerIncr :: IntThe increment to the power for each new suffix
firstPower :: IntThe first power for which suffixes are given
suffixes :: StringThe suffixes themselves
binaryOpts :: SizeOpts
Predefined definitions for byte measurement in groups of 1024, from 0 to 2**80
siOpts :: SizeOpts
Predefined definitions for SI measurement, from 10**-24 to 10**24.
Produced by Haddock version 0.8