您的位置首页  散文随感

速看123456789大写(壹,贰,叁,肆,伍,陆,柒,捌,玖,拾)

package mainimport ( "fmt" "math")// 将数字转换为大写金额字

速看123456789大写(壹,贰,叁,肆,伍,陆,柒,捌,玖,拾)

 

package main import ( "fmt""math" ) // 将数字转换为大写金额字符串funcnum2Cn(num float64)string { // 分别对应数字 0~9 的中文表述

cnNums := []string{"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"} // 分别对应数字 1~4 的中文表述,单位每 4 位递增

cnIntUnits := []string{"", "拾", "佰", "仟", "万", "拾万", "佰万", "仟万", "亿", "拾亿", "佰亿", "仟亿", "万亿"}

// 对应小数部分的中文表述 cnDecUnits := []string{"角", "分"} // 获取小数部分的整数部分,保留 2 位小数 intPart := int64(math.Floor(num)) decPart :=

int64(math.Round((num - float64(intPart)) * 100)) // 转换整数部分为中文表述var intPartCn stringif intPart ==

0 { intPartCn = cnNums[0] } else { var nZero int// 连续出现 0 的个数var unitPos int// 当前数字的单位位置

for intPart > 0 { digit := intPart % 10// 取最低位数字if digit == 0 { // 当前位为 0,需要在当前位之前加上“零”

if nZero == 0 { intPartCn = cnNums[digit] + intPartCn } nZero++ }

else { // 当前位不为 0,加上数字和单位 unit := cnIntUnits[unitPos] intPartCn = cnNums[digit] + unit + intPartCn nZero =

0 } // 递增单位位置和整数部分 unitPos++ intPart /= 10 } } // 转换小数部分为中文表述

var decPartCn stringif decPart > 0 { // 有小数部分,按照“角分”的顺序转换 decPartCn = cnNums[decPart/10] + cnDecUnits[

0] + cnNums[decPart%10] + cnDecUnits[1] } // 拼接整数和小数部分的中文表述 result := intPartCn + decPartCn

if result == "" { // 针对输入为 0 的情况 result = cnNums[0] } return result } funcmain() {

// 测试样例 fmt.Println(num2Cn(123456789.12)) // 壹亿贰仟叁佰肆拾伍万陆仟柒佰捌十玖元壹角 }该代码将一个浮点数转换为大写金额字符串,支持处理万亿级别的数字,并将小数部分按照“角分”的顺序转换为中文表述。

免责声明:本站所有信息均搜集自互联网,并不代表本站观点,本站不对其真实合法性负责。如有信息侵犯了您的权益,请告知,本站将立刻处理。联系QQ:1640731186