找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1053|回复: 10

[其他]:出道题目:根据字符格式化数字

[复制链接]

已领礼包: 488个

财富等级: 日进斗金

发表于 2007-3-3 16:22:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
出道题目
希望:

  1. 命令: (f-str 1.14657 "2.000")
  2. "1.14657"

  3. 命令: (f-str 1.1465 "2.000")
  4. "1.1465"

  5. 命令: (f-str 1.1460 "2.000")
  6. "1.146"

  7. 命令: (f-str 1.1 "2.000")
  8. "1.100"

  9. 命令: (f-str 1.1 "2")
  10. "1.1"

  11. 命令: (f-str 1 "2.000")
  12. "1.000"

  13. 命令: (f-str 1 "2")
  14. "1"

  15. 命令: (f-str 1 "2.7")
  16. "1.0"
复制代码

先保持精度(10位之内),尽量格式化成后面字符的格式
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-3-4 11:58:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
下面的代码是在网吧完成的,尚未经过测试。
[PHP]
;;;=======================
;;;尽量格式化数字to字符串
;;;日期:2007-03-04 zml84
;;;=======================
(defun f-str (num str / aa n 精度a 精度b)
    (if   (and  (numberp num)
          (= (type str)   "str")
        )
        (progn
            (setq   aa  (vl-princ-to-string num)
                    n   (strlen aa)
            )
            (if (setq   精度a   (vl-string-position  (ascii ".")
                                    aa 0 T
                        )
                )
                (progn  (while  (=  (substr a n 1)  "0")
                        (setq    n    (1- n))
                )
                    (setq  n  (-  n
                                  (vl-string-position (ascii ".") aa)
                                  -1
                              )
                    )
                )
                (setq  精度a  0
                       n      0
                )
            )
            (if (setq  精度b  (vl-string-position  (ascii ".")
                                                   str  0  T
                        )
                )
                ()
                (setq   精度b   0)
            )
            (if        (>      精度b   n)
                (rtos   num    2    精度b )
                (rtos   num    2    n     )
            )
        )
    )
)
[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 24个

财富等级: 恭喜发财

发表于 2007-3-4 12:19:07 | 显示全部楼层
[php]
(DEFUN f-str (num str / n num1)
  (IF (AND (SETQ n (VL-STRING-SEARCH "." str))
           (EQUAL (SETQ num1 (ATOF (RTOS num 2 (- (STRLEN str) 1 n))))
                    num
                    1E-10
             )
      )
    num1
    num
  )
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-3-4 12:35:44 | 显示全部楼层
[PHP]
;;;---------------------------------------------------------------
;;;fools 于 2007年03月04日 12:19  写道:
(DEFUN f-str (num str)
  (IF (EQ num (FIX num))
    num
    (ATOF
      (RTOS num 2 (- (STRLEN str) 1 (VL-STRING-SEARCH "." str)))
    )
  )
)
;;;测试:(f-str 1 "2.000")===》》1
;;;结果与题目不符。

;;;---------------------------------------------------------------
;;;fools 于 2007年03月04日 12:26  写道:
(DEFUN f-str (num str / n)
  (IF (SETQ n (VL-STRING-SEARCH "." str))
    (ATOF (RTOS num 2 (- (STRLEN str) 1 n)))
    num     
  )
)
;;;测试返回值是数字,与题目不符。
[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 24个

财富等级: 恭喜发财

发表于 2007-3-4 13:36:51 | 显示全部楼层
刚才赶着要去吃饭,没细想,呵呵,这下可以了,
[php]
(DEFUN f-str (num str / n num1)
  (IF (AND (SETQ n (VL-STRING-SEARCH "." str))
           (EQUAL (ATOF (SETQ num1 (RTOS num 2 (- (STRLEN str) 1 n))))
                  num
                  1E-10
           )
      )
    num1
    (VL-PRINC-TO-STRING num)
  )
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-3-4 14:07:30 | 显示全部楼层
[PHP];;;---------------------------------------------------------------
;;;fools 于 2007年03月04日 13:36  写道:
(DEFUN f-str (num str / n num1)
  (IF (AND (SETQ n (VL-STRING-SEARCH "." str))
           (EQUAL (ATOF (SETQ num1 (RTOS num
                                         2
                                         (- (STRLEN str) 1 n)
                                   )
                        )
                  )
                  num
                  1E-10
           )
      )
      num1
      (VL-PRINC-TO-STRING num)
  )
)
;;;请测试:(f-str 1.250 "2.2")
;;;返回结果应是1.25才对。
[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 24个

财富等级: 恭喜发财

发表于 2007-3-4 14:23:40 | 显示全部楼层
我这里返回的是1.25呀
[php]
_$ (f-str 1.250 "2.2")
"1.25"
_$ (f-str 1.25 "2.2")
"1.25"
[/php]

hehe ,我知道了,我用你写的程序测试结果为nil
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-3-4 14:31:14 | 显示全部楼层
不好意思,我这里没有Acad,所以没能测试。我也要吃饭去了,向你学习了!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 24个

财富等级: 恭喜发财

发表于 2007-3-4 14:54:36 | 显示全部楼层
相互学习,共同提高吧,呵呵.赶紧去吃饭吧.
我挺喜欢这种讨论气氛的,发现问题,思考问题,解决问题,乐在其中.
在这个帖子里你保留了我所有犯过的错误,现在回看一遍,挺有意思的.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

 楼主| 发表于 2007-3-4 16:45:56 | 显示全部楼层
命令: (f-str 1.0 "2")
"1.0"

我要整数
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 24个

财富等级: 恭喜发财

发表于 2007-3-4 17:17:03 | 显示全部楼层
给你整数
[php]
(DEFUN f-str (num str / n num1)
  (IF (EQUAL (FIX num) num 1E-10)
    (SETQ num (FIX num))
  )
  (IF (AND (SETQ n (VL-STRING-SEARCH "." str))
           (EQUAL (ATOF (SETQ num1 (RTOS num 2 (- (STRLEN str) 1 n))))
                  num
                  1E-10
           )
      )
    num1
    (VL-PRINC-TO-STRING num)
  )
)
[/php]


  1. _$ (f-str 1.0 "2")
  2. "1"
  3. _$ (f-str 1.0 "2.2312")
  4. "1.0000"
  5. _$ (f-str 1.0 "2.3412312")
  6. "1.0000000"
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-17 17:40 , Processed in 0.270181 second(s), 52 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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