浏览代码

feat:xiugai

wangchuanjin 2 月之前
父节点
当前提交
f2c240edac
共有 1 个文件被更改,包括 29 次插入0 次删除
  1. 29 0
      common/numtochinese.go

+ 29 - 0
common/numtochinese.go

@@ -0,0 +1,29 @@
+package common
+
+import (
+	"strings"
+)
+
+// 中文数字映射表
+var chineseNums = []string{"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"}
+var chinesePlaces = []string{"", "十", "百", "千", "万"} // 这里可以扩展到亿等更高位
+
+// 将数字转换为中文大写形式
+func NumToChinese(num int) string {
+	if num == 0 {
+		return chineseNums[0] // 特殊处理0
+	}
+	var result []string // 用于存放每位的中文表示
+	placeIndex := 0     // 用于记录当前的中文单位位置(十、百、千等)
+	for num > 0 {
+		digit := num % 10 // 获取当前最低位的数字
+		if digit != 0 {
+			result = append([]string{chineseNums[digit] + chinesePlaces[placeIndex]}, result...) // 将当前位的中文和单位加入结果列表,并反转以保持正确的顺序
+		} else if placeIndex != 0 && len(result) > 0 && result[0] != chineseNums[0] { // 如果当前位是0,且不是最右边且前面不是零,则添加“零”
+			result = append([]string{chineseNums[0]}, result...) // 在前面添加“零”
+		}
+		num /= 10    // 移除已处理的最低位
+		placeIndex++ // 更新中文单位的索引
+	}
+	return strings.Join(result, "") // 将结果列表合并为一个字符串并返回
+}