|
@@ -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, "") // 将结果列表合并为一个字符串并返回
|
|
|
+}
|