40 lines
928 B
Python
40 lines
928 B
Python
|
import re
|
||
|
import textwrap
|
||
|
from torba.constants import COIN
|
||
|
|
||
|
|
||
|
def lbc_to_dewies(lbc):
|
||
|
if isinstance(lbc, str):
|
||
|
result = re.search(r'^(\d{1,10})\.(\d{1,8})$', lbc)
|
||
|
if result is not None:
|
||
|
whole, fractional = result.groups()
|
||
|
return int(whole+fractional.ljust(8, "0"))
|
||
|
raise ValueError(textwrap.dedent(
|
||
|
r"""
|
||
|
Decimal inputs require a value in the ones place and in the tenths place
|
||
|
separated by a period. The value provided, '{}', is not of the correct
|
||
|
format.
|
||
|
|
||
|
The following are examples of valid decimal inputs:
|
||
|
|
||
|
1.0
|
||
|
2.34500
|
||
|
4534.4
|
||
|
2323434.0000
|
||
|
|
||
|
The following are NOT valid:
|
||
|
|
||
|
83
|
||
|
.456
|
||
|
123.
|
||
|
""".format(lbc)
|
||
|
))
|
||
|
|
||
|
|
||
|
def dewies_to_lbc(dewies):
|
||
|
lbc = '{:.8f}'.format(dewies / COIN).rstrip('0')
|
||
|
if lbc.endswith('.'):
|
||
|
return lbc+'0'
|
||
|
else:
|
||
|
return lbc
|