# 判斷是否包含小數點,還有判斷是否只包含小數點和數字的這邊沒寫出來
def is_contain_dot(check_str):
check_str = str(check_str)
for ch in check_str:
if ch == '.':
return true
return false
def digital_to_upper(moneystr):
nums =
decimal_label = ['角', '分']
small_int_label =
decimal_part = ''
integer_part_list =
integer_part = ''
# 包含小數點,則分成整數部分和小數部分
if is_contain_dot(moneystr) is true:
integer, decimal = str(moneystr).split('.', 1)
if len(decimal)>2:
# print('小數部分超出')
return ('小數部分超出範圍')
elif len(integer)>9:
return ('還沒見過這麼多錢')
# 處理小數部分,只處理到百分位
for i, j in enumerate(decimal):
"""i: 記錄迴圈次數
"""if j == '0' and decimal[-1] != '0':
decimal_part += nums[int(j)]
elif j == '0' and decimal[-1] == '0':
pass
else:
decimal_part += (nums[int(j)] + decimal_label[i])
# 不包含小數點,則為整數部分
else:
integer = str(moneystr)
if len(integer)>9:
return ('還沒見過這麼多錢')
"""處理整數部分,到億;這邊的處理辦法是從低位往高位讀,遇到0,判斷前一位是否為0,前一位為0的情況則不讀,如果前一位不為0,則讀0。
"""if integer != '' and int(integer) != 0:
integer_part_list.insert(0, '元')
for n, m in enumerate(integer[::-1]):
if n == 0 and m == '0':
pass
else:
# 當前為0 同時在萬位,並且輸入不為0時插入「萬」
if m=='0' and n==4 and int(integer) != 0:
integer_part_list.insert(0, '萬')
elif m=='0' and integer[::-1][n-1] != '0':
integer_part_list.insert(0, (nums[int(m)]))
elif m == '0' and integer[::-1][n-1] == '0':
pass
else:
integer_part_list.insert(0, (nums[int(m)] + small_int_label[n]))
integer_part = ''.join(integer_part_list)
return (integer_part+decimal_part)
完整版: 金額大寫轉換
use toy go object storedprocedure dbo l2u script date 03 19 2014 13 15 27 set ansi nulls on goset quoted identifier on goalter procedure dbo l2u n low...
python數字金額轉換為中文大寫金額
python數字金額轉換為中文大寫金額 編寫一函式,將數字金額轉換為中文大寫金額。設最高位考慮到億,最低位考慮到分 如 數字金額為1023.445,轉換為中文大寫金額為 壹仟零佰貳拾叄元肆角伍分 輸入 乙個數字金額 如 1234.5 輸出 中文大寫金額 壹仟貳佰叄拾肆元伍角零分 from decim...
oracle 金額大寫轉換
function convert money input number number return varchar2 is i pls integer snum varchar2 20 ltrim replace to char abs input number 9999999999999990.9...