本帖最后由 tryhi 于 2024-6-26 10:36 编辑
在明经群讨论了大半天的数字转函数,只有E大贴出了代码,可惜只支持到万,其他的只见装不见源码,代码写得不好,斗胆献上,仅支持到万亿,请拍砖。
- (num2str 5000000030101) =>"五万亿零三万零一百零一"
- (num2str 5012500030101) =>"五万零一百二十五亿零三万零一百零一"
汉字转数字源码在沙发,如有报错请看回复
- ;;例子(num2str 5012500030101)
- ;;将数字转换为汉字,仅支持到万亿,只支持整数
- (defun num2str(num / charofcash i n tempa tempstr)
- (setq s0 '( "零""一""二""三""四""五""六""七""八""九" ))
- (setq s1 '("""十""百""千""万""十""百""千""亿""十""百""千""万"))
- (setq num (rtos num 2 0));转字符串
- (setq i -1 CharOfCash "")
- (setq n(strlen num))
- (repeat n
- (setq i(1+ i))
- (setq TempStr(substr num (- n i)1))
- (setq TempStr (nth (atoi TempStr) s0))
- (if (/= "零" TempStr)
- (setq TempStr (strcat TempStr (nth i s1)))
- )
- (setq tempa(substr CharOfCash 1 2))
- (if (or (/= TempStr "零")(not(or (wcmatch tempa "零,万,亿")(= tempa ""))))
- (setq CharOfCash(strcat TempStr CharOfCash))
- )
- )
- (setq temp(substr CharOfCash 1 4))
- (if (= "一十"temp)(substr CharOfCash 3)CharOfCash);去掉一十
- )
(num2str 5012500030101)
;===>"五万零一百二十五亿零三万零一百零一" |