马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
将阿拉伯数字转化为中文数字(只可以处理小于亿的数字)

- [FONT=courier new]
- ;{start
- ;;变量:
- ;;
- (setq cn-arablist-dd '((0 . "零") (1 . "一") (2 . "二") (3 . "三") (4 . "四")
- ( 5 . "五") (6 . "六" ) (7 . "七") (8 . "八") (9 . "九")
- (10 . "十") (100 . "百") (1000 . "千") (10000 . "万"))
- )
- (defun arab2cn-dd ( n / cncha)
- (setq cncha "")
- ;;;;;;;;;;;个位
- (setq gw (rem n 10))
- (if (/= gw 0) (setq cncha (cdr (assoc gw cn-arablist-dd))))
- ;;;;;;;;;;;十位
- (if (>= n 10)
- (progn
- (setq sw (fix (/ (- (rem n 100) gw) 10) ))
- (cond
- ((= sw 0) (if (/= cncha "") (setq cncha (strcat "零" cncha))))
- ((= sw 1) (setq cncha (strcat "十" cncha)))
- (t (setq cncha (strcat (cdr (assoc sw cn-arablist-dd)) "十" cncha)))
- )
- )
- )
- ;;;;;;;;;;;;百位
- (if (>= n 100)
- (progn
- (setq bw (fix (/ (- (rem n 1000) sw gw) 100) ))
- (cond
- ((= bw 0) (if (and (/= "零" (substr cncha 1 2)) (/= cncha "")) (setq cncha (strcat "零" cncha))))
- (t (setq cncha (strcat (cdr (assoc bw cn-arablist-dd)) "百" cncha)))
- )
- )
- )
- ;;;;;;;;;;;;千位
- (if (>= n 1000)
- (progn
- (setq qw (fix (/ (- (rem n 10000) bw sw gw) 1000) ))
- (cond
- ((= qw 0) (if (and (/= "零" (substr cncha 1 2)) (/= cncha "")) (setq cncha (strcat "零" cncha))))
- (t (setq cncha (strcat (cdr (assoc qw cn-arablist-dd)) "千" cncha)))
- )
- )
- )
- ;;;;;;;;;;;;万位
- (if (>= n 10000)
- (progn
- (setq ww (fix (/ (- (rem n 100000) qw bw sw gw) 10000) ))
- (cond
- ((= ww 0) (if (not (or (= cncha "" ) (= (substr cncha 1 2) "零" ))) (setq cncha (strcat "零" cncha))))
- (t (setq cncha (strcat (cdr (assoc ww cn-arablist-dd)) "万" cncha)))
- )
- )
- )
- ;;;;;;;;;;;;大于万的
- (if (>= n 100000)
- (progn
- (setq n (fix (/ n 10000)))
- (if (= ww 0) (setq cncha (strcat "万" cncha)) (setq cncha (substr cncha 3)))
- ;;;(print (arab2cn-dd n))
- (setq cncha (strcat (arab2cn-dd n) cncha))
- )
- )
- ;;;;;;;;;;;;没处理大于亿的
- )
- ;
- ;end}
- [/FONT]
谁有更好的,或者将它更为完善 |