代码:
spgz='{:.2f}'.format(env['hr.payroll.function'].get_emp_sumvalue_by_meta(employee.id, 1, ['spgz']))
cdict =
{1: u'', 2: u'拾', 3: u'佰', 4: u'仟'}
- result = spgz
xdict =
{1: u'元', 2: u'万', 3: u'亿', 4: u'兆'}
# 数字标识符
gdict =
{0: u'零', 1: u'壹', 2: u'贰', 3: u'叁', 4: u'肆', 5: u'伍', 6: u'陆', 7: u'柒', 8: u'捌', 9: u'玖'}
cdata = str(spgz).split('.')
cki = cdata[0]
ckj = cdata[1]
chk = u''
g = len(cki) % 4
cski = []
lx = len(cki) - 1
if g > 0:
cski.append(cki[0:g])
k = g
while k <= lx:
cski.append(cki[k:k + 4])
k += 4
ikl = len(cski) # 获取拆分后的List长度
- 大写合并
for z in range(ikl):
lenki = len(cski[z])
lk = lenki
cschange_cski = u''
for i in range(lenki):
if int(cski[z][i]) == 0:
if i < lenki - 1:
if int(cski[z][i + 1]) != 0:
cschange_cski = cschange_cski + gdict[int(cski[z][i])]
else:
cschange_cski = cschange_cski + gdict[int(cski[z][i])] + cdict[lk]
lk -= 1
if cschange_cski == '': # 有可能一个字符串全是0的情况
chk = chk + cschange_cski # 此时不需要将数字标识符引入
else:
chk = chk + cschange_cski + xdict[ikl - z] # 合并:前字符串大写+当前字符串大写+标识符
- 处理小数部分
lenkj = len(ckj)
if lenkj == 1: # 若小数只有1位
if int(ckj[0]) == 0:
chk = chk + u'整'
else:
chk = chk + gdict[int(ckj[0])] + u'角整'
else: # 若小数有两位的四种情况
if int(ckj[0]) == 0 and int(ckj[1]) != 0:
chk = chk + u'零' + gdict[int(ckj[1])] + u'分'
elif int(ckj[0]) == 0 and int(ckj[1]) == 0:
chk = chk + u'整'
elif int(ckj[0]) != 0 and int(ckj[1]) != 0:
chk = chk + gdict[int(ckj[0])] + u'角' + gdict[int(ckj[1])] + u'分'
else:
chk = chk + gdict[int(ckj[0])] + u'角整'
result = chk