Skip to content

Commit bbc9206

Browse files
Merge pull request #26 from kojung/feature/beyond-tera
Added support for larger suffixes beyond Tera
2 parents 04630e2 + bdcf90c commit bbc9206

2 files changed

Lines changed: 34 additions & 16 deletions

File tree

engineering_notation/engineering_notation.py

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,23 +20,29 @@
2020
'k': 'e3',
2121
'M': 'e6',
2222
'G': 'e9',
23-
'T': 'e12'
23+
'T': 'e12',
24+
'P': 'e15',
25+
'E': 'e18',
26+
'Z': 'e21',
2427
}
2528

2629
_exponent_lookup_scaled = {
27-
'-48': 'y',
28-
'-45': 'z',
29-
'-42': 'a',
30-
'-39': 'f',
31-
'-36': 'p',
32-
'-33': 'n',
33-
'-30': 'u',
34-
'-27': 'm',
35-
'-24': '',
36-
'-21': 'k',
37-
'-18': 'M',
38-
'-15': 'G',
39-
'-12': 'T'
30+
'-54': 'y',
31+
'-51': 'z',
32+
'-48': 'a',
33+
'-45': 'f',
34+
'-42': 'p',
35+
'-39': 'n',
36+
'-36': 'u',
37+
'-33': 'm',
38+
'-30': '',
39+
'-27': 'k',
40+
'-24': 'M',
41+
'-21': 'G',
42+
'-18': 'T',
43+
'-15': 'P',
44+
'-12': 'E',
45+
'-9': 'Z',
4046
}
4147

4248

@@ -301,7 +307,7 @@ def __init__(self, value,
301307
suffix_keys = [key for key in _suffix_lookup.keys() if key != '']
302308

303309
for suffix in suffix_keys:
304-
if suffix in value:
310+
if suffix == value[-1]:
305311
value = value[:-1] + _suffix_lookup[suffix]
306312
break
307313

@@ -345,7 +351,7 @@ def __repr__(self):
345351
# since Decimal class only really converts number that are very small
346352
# into engineering notation, then we will simply make all number a
347353
# small number and take advantage of Decimal class
348-
num_str = self.number * Decimal('10e-25')
354+
num_str = self.number * Decimal('10e-31')
349355
num_str = num_str.to_eng_string().lower()
350356

351357
base, exponent = num_str.split('e')

tests/test_engnum.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,18 @@ def test_new_units():
9797
assert str(EngNumber('220y')) == '220y'
9898
assert str(EngNumber(0.000000000000000000000220)) == '220y'
9999

100+
# testing peta
101+
assert str(EngNumber('220P')) == '220P'
102+
assert str(EngNumber(1e15)) == '1P'
103+
104+
# testing exxa
105+
assert str(EngNumber('220E')) == '220E'
106+
assert str(EngNumber(1e18)) == '1E'
107+
108+
# testing zetta
109+
assert str(EngNumber('220Z')) == '220Z'
110+
assert str(EngNumber(1e21)) == '1Z'
111+
100112
# wrap it all up
101113
assert str(EngNumber('1f') + EngNumber('330a')) == '1.33f'
102114
assert str(EngNumber('3z') + EngNumber('440y')) == '3.44z'

0 commit comments

Comments
 (0)