liminnet
发表于 2009-7-31 08:45:00
淮上
发表于 2009-7-31 09:02:00
<p>水平高低有别是正常的。</p><p>发帖子既要谦虚、又要不卑不亢,高手别鄙视新手,新手也别谄媚高手。</p><p>尊重别人是起码的做人修养,也是论坛和谐的关键所在。</p><p>建议楼主删除不当言论!</p>
liminnet
发表于 2009-7-31 09:08:00
TANER
发表于 2009-7-31 13:39:00
<p>冤怨相报何时了!阿弥陀佛!</p>
liminnet
发表于 2010-5-4 17:46:00
Q1241274614
发表于 2010-12-26 19:38:59
liminnet
发表于 2010-12-26 20:45:45
qcw911
发表于 2010-12-26 21:03:39
狂刀无痕 发表于 2009-7-30 23:01 static/image/common/back.gif
是拍马最多还是论文最多,请说清楚
肯定是马屁啦
Gu_xl
发表于 2010-12-27 10:11:45
大家不要在这吵吵闹闹啦!这是学习交流的地方!我发个相同功能源码上来,供大家交流学习!不知道liminnet 的程序思路是否相同呢!
;;;(gxl-num->Big n b) 数字小写变大写,参数:n 数字或数字字符串 b T为中文大写 nil 中文小写
(defun gxl-num->Big (n b / numlst numlst1 dimzin rtn1 rtn2 strnum1 strnumlst1 strnum2 strnumlst2 m flag zero)
(if b
(setq numlst '(("0" . "零") ("1" . "壹")("2" . "贰")("3" . "叁")("4" . "肆")("5" . "伍")("6" . "陆")("7" . "柒")("8" . "捌")("9" . "玖"))
numlst1 '("" "拾" "佰" "仟" "万" "拾" "佰" "仟" "亿" "拾" "佰" "仟" "万" "拾" "佰" "仟")
)
(setq numlst '(("0" . "〇") ("1" . "一")("2" . "二")("3" . "三")("4" . "四")("5" . "五")("6" . "六")("7" . "七")("8" . "八")("9" . "九"))
numlst1 '("" "十" "百" "千" "万" "十" "百" "千" "亿" "十" "百" "千" "万" "十" "百" "千")
)
)
;;;将n转为字串
(if (= 'INT (type n))
(setq n (itoa n))
(if (= 'REAL (type n))
(setq n (rtos n 2 6))
(if (= 'STR (type n))
(progn
(setq n (atof n))
(if (equal n (fix n))
(setq n (rtos n 2 0))
(setq n (rtos n 2 6))
)
)
)
)
)
;;;如果包含小数位数,将字串分为 strnum1 strnum2
(setq k (VL-STRING-SEARCH "." n))
(if k (setq strnum1 (substr n 1 k)
strnum2 (substr n (+ k 2))
)
(setq strnum1 n strnum2 nil)
)
;;;将strnum1 分解为表,顺序倒置
(setq m 1)
(repeat (strlen strnum1)
(setq strnumlst1 (cons (substr strnum1 m 1)strnumlst1)
m (1+ m)
)
)
;;;将strnum2 分解为表,顺序不变
(setq m 1)
(if strnum2
(progn
(repeat (strlen strnum2)
(setq strnumlst2 (cons (substr strnum2 m 1) strnumlst2)
m (1+ m)
)
)
(setq strnum2 (apply 'strcatstrnumlst2))
(setq strnum2 (itoa (atoi strnum2))
strnumlst2 nil
m 1)
(repeat (strlen strnum2)
(setq strnumlst2 (cons (substr strnum2 m 1) strnumlst2)
m (1+ m)
)
)
)
)
;;;将strnumlst1转为大写
(setq m 0 )
(repeat (length strnumlst1)
(setq rtn1 (cons (strcat (cdr (assoc (nth m strnumlst1) numlst)) (nth mnumlst1)) rtn1))
(setq m (1+ m))
)
(setq m 0
strnum1 "")
(repeat (length rtn1)
(if b
(setq flag (WCMATCH(nth m rtn1) "零*"))
(setq flag (WCMATCH(nth m rtn1) "〇*"))
)
(if (not flag)
(setq strnum1 (strcat strnum1 (nth m rtn1)))
(if (not zero)
(setq strnum1 (if b (strcat strnum1 "零")(strcat strnum1 "〇"))
zero t
)
)
)
(setq m (1+ m))
)
;;;将strnumlst2转为大写
(if strnumlst2
(setq strnum2 (apply ' strcat (mapcar '(lambda (x) (cdr (assoc x numlst))) strnumlst2)))
)
;;;输出结果
(if strnumlst2
(strcat strnum1 "." strnum2)
strnum1
)
)
yoyoho
发表于 2010-12-27 12:41:40
感谢Gu_xl 版主分享程序
学习了!