明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: and2008

[求助]小数位四舍五入

  [复制链接]
 楼主| 发表于 2005-9-6 12:02:00 | 显示全部楼层

多谢黑猫,逐一回答如下:

1、处理的数据是单行文本,就在图中;

2、处理后的数据还放在图中;

3、处理后的数据也是单行文本,不保留小数位末位的0;

4、五楼程序没有提示保留小数位的个数,也没有提示在绘图窗口选择数字。

再次补充说明一下最后实现的意图:

为清楚起见举例如下:

在绘图窗口我有一些数据 1.15   1.203   1.654  2.987   5.621   8.9431   4. 10005

第一种情况:保留1位小数 1.2   1.2   1.7   3(.0可以不要) 5.6     8.9   4.1  

第二种情况:取消小数位    1     1        2         3         6         10        4   

................任选确定小数位个数(这个暂且不予考虑了)

实现步骤:1、执行程序   2、提示选择数字   3、提示要保留小数位个数   4、目标实现

 

不知上面所述是否详尽,期待黑猫给予解答。再次深表感谢!

发表于 2005-9-6 13:12:00 | 显示全部楼层
根据楼主要求写的程序:
  1. (DEFUN C:ROUND (/ ZIN SS I N RN RTEXT ENT)
  2. (SETVAR "CMDECHO" 0)
  3. (SETQ ZIN (GETVAR "DIMZIN"))
  4. (SETVAR "DIMZIN" 8)
  5. (PRINC "\nSelect text(s) 选择单行文本 : ")
  6. (IF (SETQ SS (SSGET (LIST (CONS 0 "TEXT")))) (PROGN
  7.   (INITGET 1)
  8.   (SETQ N (GETINT "\nKeep decimal digits 保留的小数位数 : "))
  9.   (SETQ I -1)
  10.   (REPEAT (SSLENGTH SS)
  11.    (SETQ ENT (ENTGET (SSNAME SS (SETQ I (1+ I)))))
  12.    (IF (SETQ RN (DISTOF (CDR (ASSOC 1 ENT)) 2)) (PROGN
  13.     (SETQ RTEXT (RTOS (/ (FIX (+ (* (EXPT 10 N) RN) 0.5)) (FLOAT (EXPT 10 N))))
  14.           ENT (SUBST (CONS 1 RTEXT) (ASSOC 1 ENT) ENT))
  15.     (ENTMOD ENT)
  16.    ))
  17.   )
  18. ))
  19. (SETVAR "DIMZIN" ZIN)
  20. (SETVAR "CMDECHO" 1)
  21. (PRINC)
  22. )
复制代码

点评

谢谢  发表于 2012-3-17 18:03
发表于 2005-9-6 13:23:00 | 显示全部楼层
  1. (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. ★通用函数下载地址:
  11. http://www.xdcad.net/forum/attachme...&postid=1606661
  12. http://www.mjtd.com/bbs/dispbbs.asp...ID=37554&page=1|;
  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. )

点评

谢谢  发表于 2012-3-17 18:04
 楼主| 发表于 2005-9-6 14:07:00 | 显示全部楼层
太棒了,非常感谢各位的帮助。
发表于 2005-9-25 09:16:00 | 显示全部楼层
写的好,这个问题总是没有办法
发表于 2011-9-21 16:55:02 | 显示全部楼层
如何做到(16返回20)(14返回10)
发表于 2011-9-21 16:55:41 | 显示全部楼层
就是以十为整数
发表于 2011-9-21 17:43:27 | 显示全部楼层
Command: (itoa (* (atoi (rtos (/ 16 10.0) 2 0)) 10))
"20"

Command: (itoa (* (atoi (rtos (/ 14 10.0) 2 0)) 10))
"10"

Command: (* (atoi (rtos (/ 14 10.0) 2 0)) 10)
10

Command: (* (atoi (rtos (/ 16 10.0) 2 0)) 10)
20
发表于 2012-6-24 11:19:55 | 显示全部楼层
非常感谢,实用
发表于 2012-6-24 20:24:28 | 显示全部楼层
可不可以奇进偶舍?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-17 14:11 , Processed in 0.165523 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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