人民幣數字大寫轉換

2021-09-14 02:29:31 字數 3408 閱讀 5649

中文大寫金額數字應用壹、貳、叄、肆、伍、陸、柒、捌、玖、拾、佰、仟、萬、億、元、角、分、零、整(正)等字樣。

中文大寫金額數字到"元"為止的,在"元"之後,應寫"整"(或"正")字,在"角"之後,可以不寫"整"(或"正")字。

中文大寫金額數字前應標明"人民幣"字樣,大寫金額數字有"分"的,「分"後面不寫"整」(或"正")字。

大寫金額數字應緊接"人民幣"字樣填寫,不得留有空白。

阿拉伯數字小寫金額數字中有"0"時,中文大寫應按照漢語語言規律、金額數字構成和防止塗改的要求進行書寫。

阿拉伯數字中間有"0"時,中文大寫要寫"零"字,如¥1409.50,應寫成:人民幣壹仟肆佰零玖元伍角。

阿拉伯數字中間連續有幾個"0"時,中文大寫金額中間只寫乙個"零"字,如¥6007.14,應寫成:人民幣陸仟零柒元壹角肆分。

阿拉伯金額數字萬位和元位是"0",或者數字中間連續有幾個"0",萬位、元位也是"0",但千位、角位不是"0"時,中文大寫金額中只寫乙個零字,也可以不寫"零"字。如¥1680.32,應寫成:人民幣壹仟陸佰捌拾元叄角貳分,又如¥107000.53,應寫成:人民幣壹拾萬零柒仟元伍角叄分。

阿拉伯金額數字角位是"0",而分位不是"0"時,中文大寫金額"元"後面應寫"零"字。如¥16409.02,應寫**民幣:壹萬陸仟肆佰零玖元零貳分;又如¥325.04,應寫**民幣叄佰貳拾伍元零肆分。

inte_group = [integral[::-1][i:i+4][::-1] for i in range(0, len(integral), 4)][::-1]
儲存單位的list中,有個單位為無,為了統一處理,可以使用空單位佔位子。

unit_group_map = ('仟', '佰', '拾', '')
從低位到高位分節處理

估計還是有些瑕疵。

import sys

import re

defconvert2accounting

(src)

: res_prefix =

"人民幣"

res =

"" num_map =

"零壹貳叄肆伍陸柒捌玖"

unit_map =

('萬億億'

,'億億'

,'萬億'

,'億'

,'萬'

,'元'

)def

convert_groups

(group)

: res_group =

"" unit_group_map =

('仟'

,'佰'

,'拾',''

)for i in

range(-

1,-len

(group)-1

,-1)

: res_group =

((num_map[

int(group[i])]

+ unit_group_map[i])if

(group[i]

!='0'

)else

'零')

+ res_group

return res_group.rstrip(

'零')

defconvert_integral

(integral)

: res_inte =

"" inte_group =

[integral[::

-1][i:i+4]

[::-

1]for i in

range(0

,len

(integral),4

)][:

:-1]

for i in

range(-

1,-len

(inte_group)-1

,-1)

: res_inte =((

(convert_groups(inte_group[i]

)+ unit_map[i]

)if convert_groups(inte_group[i])!=

''else'')

+ res_inte)

return res_inte

ifnot re.match(r'¥\d(\.\d)?$'

, src)

:return

"format error!"

src = src[1:

]if src[0]

=='0'

: src = src.lstrip(

'0')

if src.count(

'.')==0

: integral = src

res = convert_integral(integral)

elif src.count(

'.')==1

: integral, decimal = src.split(

'.')

res = convert_integral(integral)

unit_decimal_map =

"角分"

for i in

range(0

,len

(decimal)):

res +=

((num_map[

int(decimal[i])]

+ unit_decimal_map[i])if

(decimal[i]

!='0'

)else

'零')

else

: res =

"the count of '.' should be 0 or 1"

res = res_prefix + res

while res.count(

"零零"):

res = res.replace(

"零零"

,"零"

)if res.endswith(

'零')

: res = res[:-

1]if res.endswith(

'元')

: res +=

'整'for unit in unit_map:

if res.count(

'零'+unit)

: res = res.replace(

'零'+unit, unit)

return res

if __name__ ==

"__main__"

:print

(convert2accounting(sys.ar**[1]

))

人民幣 Rmb 數字轉換大寫 大寫

package com.test public class rmbconvert 段內的量度 char vunit 段間的量度 char digit 小寫對應的大寫 long longmoney long money 100 string strmoney string.valueof longmo...

人民幣大寫轉換為數字

public class rmbutils 中文中繁寫的漢字金額 經常使用 public static final string big rmb numbers new string 大寫的漢字 與漢字相應的轉化的數字 public static final long to arabic numbe...

人民幣大寫轉換

人民幣大寫轉換 param numbervalue 人民幣小寫 return rmbcapital function numbervalue var chinesevalue 轉換後的漢字金額 var string1 零壹貳叄肆伍陸柒捌玖 漢字數字 var string2 萬仟佰拾億仟佰拾萬仟佰拾元...