速看123456789大写(壹,贰,叁,肆,伍,陆,柒,捌,玖,拾)
package mainimport ( "fmt" "math")// 将数字转换为大写金额字
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)) // 壹亿贰仟叁佰肆拾伍万陆仟柒佰捌十玖元壹角 }该代码将一个浮点数转换为大写金额字符串,支持处理万亿级别的数字,并将小数部分按照“角分”的顺序转换为中文表述。
- 标签:
- 编辑:李松一
- 相关文章
-
一看就会1公升等于多少升(1公升等于多少升柴油)
碳排放介绍及相关计算方法 二氧化碳排放的计算可以通过实际能源使用情况,比如燃料账单/水电费上的说明,来乘以一个相应的“碳强…
-
原创元气骑士古代武器残页有什么用(元气骑士2023礼包兑换码)
今天,如何让文物“走”出展柜,让博物馆进入生活场景,使文物古韵焕发新生,已经成为相关政府部门、文博工作者和爱好者们所关注的话题。…
- 全程干货挖掘机一般多少钱(挖掘机200一般多少钱一台)
- 新鲜出炉MP7(mp7和mp5sd哪个好)
- 这都可以?海猫络合物(海猫络合物结婚了吗)
- 新鲜出炉维修电脑一般要多少钱(电脑花屏维修多少钱)
- 学到了psp3000(psp3000和psv1000哪个好)