Supported Prefixes¶
SI (Decimal) Prefixes¶
Prefix | Name | Base |
---|---|---|
Q | Quetta | 1030 |
R | Ronna | 1027 |
Y | Yotta | 1024 |
Z | Zetta | 1021 |
E | Exa | 1018 |
P | Peta | 1015 |
T | Tera | 1012 |
G | Giga | 109 |
M | Mega | 106 |
k | Kilo | 103 |
m | Milli | 10-3 |
μ | Micro | 10-6 |
n | Nano | 10-9 |
p | Pico | 10-12 |
f | Femto | 10-15 |
a | Atto | 10-18 |
z | Zepto | 10-21 |
y | Yocto | 10-24 |
r | Ronto | 10-27 |
q | Quecto | 10-30 |
IEC (Binary) Prefixes¶
Prefix | Name | Base |
---|---|---|
Y | Yobi | 280 |
Z | Zebi | 270 |
E | Exbi | 260 |
P | Pedi | 250 |
T | Tebi | 240 |
G | Gibi | 230 |
M | Mebi | 220 |
K | Kibi | 210 |
Format Specification¶
format_spec ::= [[fill]align][sign][#][0][![!]][width][grouping_option][%[-]margin][.precision][type]
fill ::= <any character>
align ::= "<" | ">" | "=" | "^"
sign ::= "+" | "-" | " "
width ::= digit+
grouping_option ::= "_" | ","
precision ::= digit+
type ::= "e" | "E" | "f" | "F" | "g" | "G" | "h" | "H" | "k" | "K" | "m" | "M" | "n" | "%"
Prefixed-specific fields are defined below. Descriptions of standard fields can be found in the Format Specification Mini-Language documentation.
Prefixed-specific fields¶
Flags¶
Flag | Meaning |
---|---|
'!' |
Add a single space between number and prefix |
'!!' |
Same as '!' , but drop space if there is no prefix |
Margin¶
By default, a prefix will be used when the magnitude of that prefix is reached.
For example, format(Float(999), '.1h')
will result in '999.0'
and
format(Float(1000), '.1h')
will result in '1.0k'
.
Margin specifies the percentage to raise or lower these thresholds.
>>> f'{Float(950):%-5.2h}'
'0.95k'
>>> f'{Float(1000):%5.2h}'
'1000.00'
Presentation Types¶
Type Meaning 'h'
SI format. Outputs the number with closest divisible SI prefix. (k, M, G, …) 'H'
Same as 'h'
with precision indicating significant digits.'k'
IEC Format. Outputs the number with closest divisible IEC prefix. (Ki, Mi, Gi, …) 'K'
Same as 'k'
with precision indicating significant digits.'m'
Short IEC Format. Same as 'k'
but only a single character. (K, M, G, …)'M'
Same as 'm'
with precision indicating significant digits.'j'
Alias for 'k'
- DEPRECATED'J'
Alias for 'm'
- DEPRECATED
API Reference¶
-
class
prefixed.
Float
([x])¶ Subclass of the built-in
float
classKey differences:
When a math operation is performed with another real number type (
float
,int
), the result will be aprefixed.Float
instance.Additional presentation types
'h'
,'H'
,'k'
,'K'
,'m'
, and'M'
are supported for f-strings andformat()
.Type Meaning 'h'
SI format. Outputs the number with closest divisible SI prefix. (k, M, G, …) 'H'
Same as 'h'
with precision indicating significant digits.'k'
IEC Format. Outputs the number with closest divisible IEC prefix. (Ki, Mi, Gi, …) 'K'
Same as 'k'
with precision indicating significant digits.'m'
Short IEC Format. Same as 'k'
but only a single character. (K, M, G, …)'M'
Same as 'm'
with precision indicating significant digits.'j'
Alias for 'k'
- DEPRECATED'J'
Alias for 'm'
- DEPRECATEDWhen initializing from strings, SI and IEC prefixes are honored
>>> Float('2k') Float(2000.0) >>> Float('2Ki') Float(2048.0)
An additional format flag ‘!’ is available which adds a space before the prefix
>>> f'{Float(3250):!.2h}' '3.25 k'
When the
'H'
,'K
, or'M'
presentation types are used, precision is treated as the number of significant digits to include. Standard rounding will occur for the final digit.>>> f'{Float(1246):.3h}' '1.246k' >>> f'{Float(1246):.3H}' '1.25k'
By default, trailing zeros are removed.
>>> f'{Float(1000):.3H}' '1k'
To preserve trailing zeros, include the
'#'
flag.>>> f'{Float(1000):#.3H}' '1.00k'
An additional field, margin, can be specified which lowers or raises the threshold for for each prefix by the given percentage. Margin is specified before precision with the syntax
%[-]digit+
.>>> f'{Float(950):.2h}' '950.00' >>> f'{Float(950):%-5.2h}' '0.95k' >>> f'{Float(1000):%5.2h}' '1000.00' >>> f'{Float(1050):%5.2h}' '1.05k'
Overview¶
Prefixed provides an alternative implementation of the built-in float
which supports
formatted output with SI (decimal) and IEC (binary) prefixes.
>>> from prefixed import Float
>>> f'{Float(3250):.2h}'
'3.25k'
>>> '{:.2h}s'.format(Float(.00001534))
'15.34μs'
>>> '{:.2k}B'.format(Float(42467328))
'40.50MiB'
>>> f'{Float(2048):.2m}B'
'2.00KB'
Because prefixed.Float
inherits from the built-in float
, it behaves
exactly the same in most cases.
When a math operation is performed with another real number type
(float
, int
), the result will be a prefixed.Float
instance.
Presentation Types¶
Additional presentation types 'h'
, 'H'
, 'k'
, 'K'
,
'm'
, and 'M'
are supported for f-strings and format()
.
Type | Meaning |
---|---|
'h' |
SI format. Outputs the number with closest divisible SI prefix. (k, M, G, …) |
'H' |
Same as 'h' with precision indicating significant digits. |
'k' |
IEC Format. Outputs the number with closest divisible IEC prefix. (Ki, Mi, Gi, …) |
'K' |
Same as 'k' with precision indicating significant digits. |
'm' |
Short IEC Format. Same as 'k' but only a single character.
(K, M, G, …) |
'M' |
Same as 'm' with precision indicating significant digits. |
'j' |
Alias for 'k' - DEPRECATED |
'J' |
Alias for 'm' - DEPRECATED |
String Initialization¶
When initializing from strings, SI and IEC prefixes are honored
>>> Float('2k')
Float(2000.0)
>>> Float('2Ki')
Float(2048.0)
Additional Flags¶
An additional format flag ‘!’ is available which adds a space before the prefix
>>> f'{Float(3250):!.2h}'
'3.25 k'
Significant Digits¶
When the 'H'
, 'K
, or 'M'
presentation types are used, precision is treated as
the number of significant digits to include. Standard rounding will occur for the final digit.
>>> f'{Float(1246):.3h}'
'1.246k'
>>> f'{Float(1246):.3H}'
'1.25k'
By default, trailing zeros are removed.
>>> f'{Float(1000):.3H}'
'1k'
To preserve trailing zeros, include the '#'
flag.
>>> f'{Float(1000):#.3H}'
'1.00k'
Adjustable Thresholds¶
An additional field, margin, can be specified which lowers or raises the threshold for
for each prefix by the given percentage.
Margin is specified before precision with the syntax %[-]digit+
.
>>> f'{Float(950):.2h}'
'950.00'
>>> f'{Float(950):%-5.2h}'
'0.95k'
>>> f'{Float(1000):%5.2h}'
'1000.00'
>>> f'{Float(1050):%5.2h}'
'1.05k'