找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1758|回复: 7

[LISP程序]:数字小数位四舍五入

[复制链接]
发表于 2005-9-2 18:23:32 | 显示全部楼层 |阅读模式

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

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

×
一些数字有很多小数位,通过四舍五入的方式:
1.取整   2.保留1位小数   3.保留2....等位小数
我想借助lsp程序通过输入0  1  2  ......数字来确定保留小数位的个数。
不知道能否实现上述的想法。
敬请高手给予解答。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-9-3 08:33:57 | 显示全部楼层
  1. [FONT=courier new](load "xyp_lib")
  2. ;|加载通用函数(可在签名栏直接下载)
  3. 如果已经下载xyp_lib并放到搜索路径下可以不再下载!
  4. 利用以下任何一种方式即可加载和运行通用函数内的所有子程序:
  5. 1.在acad.lsp中增加(load"xyp_lib")
  6. 2.在每个程序内增加(load"xyp_lib")
  7. 3.在command下,输入(load"xyp_lib")
  8. 4.在菜单.mnl中增加(load"xyp_lib")
  9. 5.将xyp_lib.vlx文件直接拽到cad屏幕
  10. [COLOR=red] ★通用函数下载地址:[/COLOR]
  11. [url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]
  12. [url]http://www.mjtd.com/bbs/dispbbs.asp?boardID=3&ID=37554&page=1[/url]|;

  13. (defun c:test ()
  14.   (CMDLA0)
  15.   (setvar "DIMZIN" 0)
  16.   (setq NO1 (UINT 7 "" "\n保留位数" NO1))
  17.   (while (setq s1 (car (entsel "\n选择数字文本 : ")))
  18.     (setq txt (rtos (atof (dxf 1 (entget s1))) 2 no1))
  19.     (sub_upd s1 1 txt)
  20.   )
  21.   (CMDLA1)
  22. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-5 09:08:41 | 显示全部楼层
感谢楼上的,不过好像是不能运行噢,提示什么“no function definition:cmdlao”。不知哪里出问题了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-5 13:10:49 | 显示全部楼层
最初由 and2008 发布
[B]感谢楼上的,不过好像是不能运行噢,提示什么“no function definition:cmdlao”。不知哪里出问题了。 [/B]

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

使用道具 举报

发表于 2005-9-5 17:12:54 | 显示全部楼层
[PHP]
(defun sswr (real num / real1)
(setvar "dimzin" 0)
(setq a (* real (expt 10 num)))
(setq real2 (- (quzheng (* real (expt 10 (1+ num)))) (* (quzheng (* real (expt 10 num))) 10)))
(if (> real2 4) (setq addnum 1) (setq addnum 0))
(setq real1 (/ (+ (atof (rtos (quzheng (* real (expt 10 num))))) addnum) (expt 10 num)))
real1
)
(defun quzheng(real1 / temp)
(setq temp (atoi (rtos real1)))
temp
)


(defun c:test()
(setq a (getreal "\n实数"))
(setq b (getint "\n小数位数"))
(setq c (rtos (sswr a b) 2 b))
(princ "\n               c = ") (princ c);Erase_DV
(getstring "\nPress Enter to continue...");Erase_DV
)

[/PHP]


不过很遗憾的是,在cad中,假如(setq a 25.600)的话,返回的是25.6,没法保留2位小数,可能得把它变成字符串,所以这个四舍五入的程序没有办法(sswr 25.600 2)=25.60 而只是25.6
有待修改
不过经过几位长老的教导,也学会了:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-5 20:43:03 | 显示全部楼层
是要变成字符串才能满足你的要求,因为在cad的数中25.6=25.60,并没有错
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-6 09:36:23 | 显示全部楼层
5楼的程序没有提示选择数字的文字和需要保留几位数字,另外你说的小数位末位是0是不会在cad上显示,其实也没有多大意义,不管就是了。如果上面保留几位数字选择不好在程序重处理的话,就定义两种情况吧:取整、保留一位小数。当然好要四舍五入哦。非常感谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2005-9-6 10:02:30 | 显示全部楼层
最初由 snoopychen 发布
[B](defun sswr (real num / real1)
(setq a (* real (expt 10 num)))
(setq real2 (- (quzheng (* real (expt 10 (1+ num)))) (* (quzheng (* real (expt 10 num))) 10)))
(if (> real2 4) (setq addnum 1) (setq a... [/B]


还有一个相关的系统变量:DIMZIN,将DIMZIN设为0,然后使用“(rtos 数值 2 小数位数)”设置。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 15:47 , Processed in 0.168292 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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