在 Python 中将金额转换为印度表示法
问题描述
问题:我需要将金额转换为印度货币格式
Problem: I need to convert an amount to Indian currency format
我的代码:我有以下 Python
实现:
import decimal
def currencyInIndiaFormat(n):
d = decimal.Decimal(str(n))
if d.as_tuple().exponent < -2:
s = str(n)
else:
s = '{0:.2f}'.format(n)
l = len(s)
i = l-1;
res = ''
flag = 0
k = 0
while i>=0:
if flag==0:
res = res + s[i]
if s[i]=='.':
flag = 1
elif flag==1:
k = k + 1
res = res + s[i]
if k==3 and i-1>=0:
res = res + ','
flag = 2
k = 0
else:
k = k + 1
res = res + s[i]
if k==2 and i-1>=0:
res = res + ','
flag = 2
k = 0
i = i - 1
return res[::-1]
def main():
n = 100.52
print "INR " + currencyInIndiaFormat(n) # INR 100.52
n = 1000.108
print "INR " + currencyInIndiaFormat(n) # INR 1,000.108
n = 1200000
print "INR " + currencyInIndiaFormat(n) # INR 12,00,000.00
main()
我的问题:有没有办法让我的 currencyInIndiaFormat 函数更短、更简洁、更干净?/有没有更好的方法来编写我的 currencyInIndiaFormat 函数?
My Question: Is there a way to make my currencyInIndiaFormat function shorter, more concise and clean ? / Is there a better way to write my currencyInIndiaFormat function ?
注意:我的问题主要是基于上述问题的Python
实现.这不是之前关于将货币转换为印度格式的问题的重复.
Note: My question is mainly based on Python
implementation of the above stated problem. It is not a duplicate of previously asked questions regarding conversion of currency to Indian format.
印度货币格式:
例如,这里的数字表示为:
For example, numbers here are represented as:
1
10
100
1,000
10,000
1,00,000
10,00,000
1,00,00,000
10,00,00,000
参考印度编号系统
解决方案
工作量太大.
>>> import locale
>>> locale.setlocale(locale.LC_MONETARY, 'en_IN')
'en_IN'
>>> print(locale.currency(100.52, grouping=True))
₹ 100.52
>>> print(locale.currency(1000.108, grouping=True))
₹ 1,000.11
>>> print(locale.currency(1200000, grouping=True))
₹ 12,00,000.00
相关文章