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 版主分享程序
学习了!
页: 1 [2] 3
查看完整版本: [原创]阿拉伯数字与中国的大小写数字"沟通"的终结者