forked from s3lph/matemat
Added code comments to parse_chf.
This commit is contained in:
parent
862a0e6fa8
commit
a4930d268d
1 changed files with 6 additions and 0 deletions
|
@ -168,21 +168,27 @@ def parse_chf(value: str) -> int:
|
||||||
:return: An integer representation of the value.
|
:return: An integer representation of the value.
|
||||||
:raises: Value error: If more than two digits after the decimal point are present.
|
:raises: Value error: If more than two digits after the decimal point are present.
|
||||||
"""
|
"""
|
||||||
|
# Remove optional leading "CHF" and strip whitespace
|
||||||
value = value.strip()
|
value = value.strip()
|
||||||
if value.startswith('CHF'):
|
if value.startswith('CHF'):
|
||||||
value = value[3:]
|
value = value[3:]
|
||||||
value = value.strip()
|
value = value.strip()
|
||||||
if '.' not in value:
|
if '.' not in value:
|
||||||
|
# already is an integer; parse and turn into centimes
|
||||||
return int(value, 10) * 100
|
return int(value, 10) * 100
|
||||||
|
# Split at the decimal point
|
||||||
full, frac = value.split('.', 1)
|
full, frac = value.split('.', 1)
|
||||||
if len(frac) > 2:
|
if len(frac) > 2:
|
||||||
raise ValueError('Needs max. 2 digits after decimal point')
|
raise ValueError('Needs max. 2 digits after decimal point')
|
||||||
elif len(frac) < 2:
|
elif len(frac) < 2:
|
||||||
|
# Right-pad fraction with zeros ("x." -> "x.00", "x.x" -> "x.x0")
|
||||||
frac = frac + '0' * (2 - len(frac))
|
frac = frac + '0' * (2 - len(frac))
|
||||||
|
# Parse both parts
|
||||||
ifrac: int = int(frac, 10)
|
ifrac: int = int(frac, 10)
|
||||||
ifull: int = int(full, 10)
|
ifull: int = int(full, 10)
|
||||||
if ifrac < 0:
|
if ifrac < 0:
|
||||||
raise ValueError('Fraction part must not be negative.')
|
raise ValueError('Fraction part must not be negative.')
|
||||||
if full.startswith('-'):
|
if full.startswith('-'):
|
||||||
ifrac = -ifrac
|
ifrac = -ifrac
|
||||||
|
# Combine into centime integer
|
||||||
return ifull * 100 + ifrac
|
return ifull * 100 + ifrac
|
||||||
|
|
Loading…
Reference in a new issue