How do I change an input float (for example 50300.45) into words in the form of a voucher (fifty thousand three hundred and 45/100 dollars) in python?
Asked
Active
Viewed 1,139 times
0
-
This doesn't answer your question, but I think it might be worthwhile you reading it: https://stackoverflow.com/questions/3730019 – beresfordt Jul 16 '15 at 21:43
1 Answers
0
To spell out money represented as a decimal string with two digits after the point: spell out the integer part, spell out the fraction:
#!/usr/bin/env python
import inflect # $ pip install inflect
def int2words(n, p=inflect.engine()):
return ' '.join(p.number_to_words(n, wantlist=True, andword=' '))
def dollars2words(f):
d, dot, cents = f.partition('.')
return "{dollars}{cents} dollars".format(
dollars=int2words(int(d)),
cents=" and {}/100".format(cents) if cents and int(cents) else '')
for dollars in ['50300.45', '100', '00.00']:
print(dollars2words(dollars))
Output
fifty thousand three hundred and 45/100 dollars
one hundred dollars
zero dollars
Here's inflect
module helps to convert integer to English words. See How do I tell Python to convert integers into words