明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5655|回复: 24

[函数] [源码]数字转为汉字函数、汉字数字互转

[复制链接]
发表于 2015-10-18 21:43:36 | 显示全部楼层 |阅读模式
本帖最后由 tryhi 于 2024-6-26 10:36 编辑

在明经群讨论了大半天的数字转函数,只有E大贴出了代码,可惜只支持到万,其他的只见装不见源码,代码写得不好,斗胆献上,仅支持到万亿,请拍砖。


  • (num2str 5000000030101) =>"五万亿零三万零一百零一"
  • (num2str 5012500030101) =>"五万零一百二十五亿零三万零一百零一"



汉字转数字源码在沙发,如有报错请看回复

  1. ;;例子(num2str 5012500030101)
  2. ;;将数字转换为汉字,仅支持到万亿,只支持整数
  3. (defun num2str(num / charofcash i n tempa tempstr)
  4.         (setq s0 '( "零""一""二""三""四""五""六""七""八""九" ))
  5.         (setq s1 '("""十""百""千""万""十""百""千""亿""十""百""千""万"))  
  6.         (setq num (rtos num 2 0));转字符串
  7.         (setq i -1 CharOfCash "")
  8.         (setq n(strlen num))
  9.         (repeat n
  10.                 (setq i(1+ i))
  11.                 (setq TempStr(substr num (- n i)1))
  12.                 (setq TempStr (nth (atoi TempStr) s0))
  13.                 (if (/= "零" TempStr)
  14.                         (setq TempStr (strcat TempStr (nth i s1)))
  15.                 )
  16.                 (setq tempa(substr CharOfCash  1 2))
  17.                 (if (or (/= TempStr "零")(not(or (wcmatch tempa "零,万,亿")(= tempa ""))))
  18.                         (setq CharOfCash(strcat TempStr CharOfCash))
  19.                 )
  20.         )
  21.         (setq temp(substr CharOfCash 1 4))
  22.         (if (= "一十"temp)(substr CharOfCash 3)CharOfCash);去掉一十
  23. )



(num2str 5012500030101)
;===>"五万零一百二十五亿零三万零一百零一"

评分

参与人数 2明经币 +2 金钱 +30 收起 理由
cghdy + 1
LPACMQ + 1 + 30 很给力!

查看全部评分

"觉得好,就打赏"
    共1人打赏

本帖被以下淘专辑推荐:

发表于 2017-7-26 13:17:31 来自手机 | 显示全部楼层
终于可以两次进到明经
回复 支持 1 反对 0

使用道具 举报

发表于 2024-4-20 23:22:48 | 显示全部楼层
tryhi 发表于 2024-4-19 10:07
命令: (num2str 10)
"十"

您好,我在两台电脑试了。一台一切正常,另一台在11-19区间会返还“一十一” “一十二”,在10会返还空字符串。代码完全一样
 楼主| 发表于 2024-4-19 10:07:59 | 显示全部楼层
15019720309 发表于 2024-4-14 23:30
请问为什么输入10返回nil

命令: (num2str 10)
"十"

不知道你是怎么输的
 楼主| 发表于 2015-10-18 21:46:54 | 显示全部楼层
本帖最后由 tryhi 于 2016-3-23 15:08 编辑
  1. (str2num "一千零八十万八千七百六十七")
  2. ;;汉字转数字
  3. (defun str2num(str)
  4. (defun _qian(w1 / i n num strx)
  5.   (setq w1 (try-StrRegExpReplace w1"零"""))
  6.   (setq w1 (strcat w1"零"))
  7.   (setq w1l(try-StrRegExp w1 ".+?[千百十零]"))
  8.   (setq i -1 n 0)
  9.   (repeat (length w1l)
  10.     (setq i(1+ i) strx(nth i w1l))
  11.     (setq num (strcat(_n2s (substr strx 1 2))(_n2s (substr strx 3 2))))
  12.     (setq n(+ n (atof num)))
  13.   )
  14. )
  15. (if(="十"(substr str 1 2))(setq str(strcat "一"str)))
  16. (setq ls(try-StringSplit str "万"))
  17. (setq w1 (last ls)n 0)
  18. (if (/= ""w1) (setq n (_qian w1)))
  19. (if (< 1(length ls))(setq n(+ n(* 10000(_qian(car ls))))))
  20. (fix n)
  21. )

  22. (defun _n2s(num)
  23.   (cond
  24.     ((= num "零")"")
  25.     ((= num "一")"1")
  26.     ((= num "二")"2")
  27.     ((= num "两")"2")
  28.     ((= num "三")"3")
  29.     ((= num "四")"4")
  30.     ((= num "五")"5")
  31.     ((= num "六")"6")
  32.     ((= num "七")"7")
  33.     ((= num "八")"8")
  34.     ((= num "九")"9")
  35.     ((= num "十")"0")
  36.     ((= num "百")"00")
  37.     ((= num "千")"000")
  38.   )
  39. )
发表于 2015-10-18 21:46:58 | 显示全部楼层
哈哈 哈哈哈哈
发表于 2015-10-18 21:58:59 | 显示全部楼层
赞哦~\(≧▽≦)/~
发表于 2015-10-19 00:16:37 | 显示全部楼层
多谢,源码!!学习学习!!!
发表于 2015-10-19 07:48:46 | 显示全部楼层
_N2BIG
缺少子程序
发表于 2015-10-19 09:01:44 | 显示全部楼层
; 错误: no function definition: _N2BIG
 楼主| 发表于 2015-10-19 22:54:06 | 显示全部楼层
本帖最后由 tryhi 于 2015-10-22 19:39 编辑
ynhh 发表于 2015-10-19 09:01
; 错误: no function definition: _N2BIG
  1. (defun _N2BIG(num)
  2.         (cdr (assoc num '(("0" . "零")("1" . "一")("2" . "二")("3" . "三")("4" . "四")("5" . "五")("6" . "六")("7" . "七")("8" . "八")("9" . "九"))))
  3. )
发表于 2015-10-20 11:26:12 | 显示全部楼层
1.(num2str 5012500030101)
; 错误: 参数类型错误: stringp nil
 楼主| 发表于 2015-10-20 12:46:07 | 显示全部楼层
ynhh 发表于 2015-10-20 11:26
1.(num2str 5012500030101)
; 错误: 参数类型错误: stringp nil

_N2BIG函数拷贝有误,已经修改_N2BIG函数
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-12-23 19:47 , Processed in 0.200668 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表