明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 7679|回复: 20

[求助]小数位四舍五入

  [复制链接]
发表于 2005-9-2 18:24:00 | 显示全部楼层 |阅读模式
一些数字有很多小数位很是头痛,如果通过四舍五入的方式:
1.取整 2.保留1位小数 3.保留2....等位小数
我想借助lsp程序通过输入0 1 2 ......数字来确定保留小数位的个数。
不知道能否实现上述的想法。
敬请高手给予解答。
发表于 2005-9-3 08:32:00 | 显示全部楼层

"rtos"就可以保留小数的位数呀.

(rtos <数值> [模式 [精度值]])

模式中:1.科学记号 2.十进制 3工程(尺与十进制的寸) 4建筑(尺与分数的寸) 5分数

如果选择十进制的话,精度值就代表你保留几位小数了

例如:

(rtos 20.123 2 1)返回 20.1

 

(rtos 20.123 2 2)返回 20.12

这个例子是模式2,其他的模式你自己可以慢慢试

不知道这些能不能给你帮助

 

点评

谢谢  发表于 2012-3-17 17:56
 楼主| 发表于 2005-9-5 09:01:00 | 显示全部楼层
偶是初学者,不知楼上的能否给个程序啊?
发表于 2005-9-5 10:20:00 | 显示全部楼层

将数字转换成字符串
(rtos number [mode [precision]])

根据 mode、precision 参数和系统变量 UNITMODE、DIMZIN、LUNITS 和 LUPREC 的设置,rtos
函数返回代表 number 的字符串。

参数

number

数值。

mode

整数,指定现行单位模式。mode 的取值对应于 AutoCAD 系统变量 lunits 的允许值,如下所示:
1  科学
2  小数
3  工程(英尺和十进制英寸)
4  建筑(英尺和分数英寸)
5  分数

precision

整数,指定精度。

mode 和 precision 参数对应于系统变量 LUNITS 和 LUPREC。如果省略这两个参数,rtos 函数使用 LUNITS 和 LUPREC 的当前值。

返回值

字符串。当选择了工程记数格式、建筑记数格式或分数单位格式时(即 mode 值为 3、4 或 5),
UNITMODE 系统变量对返回的字符串有影响。

样例

设置变量 x:

命令:(setq x 17.5)

17.5

将 x 的值转换为科学记数格式的字符串,精度为 4:

命令:(setq fmtval (rtos x 1 4))

"1.7500E+01"

将 x 的值转换为小数格式的字符串,精度为 2:

命令:(setq fmtval (rtos x 2 2))

"17.50"

将 x 的值转换为工程记数格式的字符串,精度为 2:

命令:(setq fmtval (rtos x 3 2))

"1'-5.50\""

将 x 的值转换为建筑格式的字符:

命令:(setq fmtval (rtos x 4 2))

"1'-5 1/2\""

将 x 的值转换为分数格式的字符:

命令:(setq fmtval (rtos x 5 2))

"17 1/2"

当系统变量 UNITMODE 设为 1 时,则设定显示单位与输入单位相同,由 rtos 返回的字符串会因“工程”(mode = 3)、“建筑”(mode = 4) 和“分数”(mode = 5) 的单位不同而异。例如:

命令:(setvar "unitmode" 1)

1

命令:(setq fmtval (rtos x 3 2))

"1'5.50\""

命令:(setq fmtval (rtos x 4 2))

"1'5-1/2\""

命令:(setq fmtval (rtos x 5 2))

"17-1/2"

发表于 2005-9-5 10:25:00 | 显示全部楼层
本帖最后由 作者 于 2005-9-5 14:06:07 编辑

程序:
  1. (DEFUN ROUND (RN N)
  2. (COND
  3.   ((= N 0) (FIX (+ RN 0.5)))
  4.   (T (/ (FIX (+ (* (EXPT 10 N) RN) 0.5)) (FLOAT (EXPT 10 N))))
  5. )
  6. )
复制代码

点评

谢谢  发表于 2012-3-17 18:02
 楼主| 发表于 2005-9-5 11:57:00 | 显示全部楼层
感谢楼上的,看起来挺简洁的,可是这么运行呢?能否明示一下,不胜感激。
发表于 2005-9-5 12:22:00 | 显示全部楼层

(ROUND 3.5 0)--->4

(ROUND 3.4 0)--->3

(ROUND 10.25 1) --->10.3

发表于 2005-9-5 12:50:00 | 显示全部楼层
5楼程序没贴好()
 楼主| 发表于 2005-9-6 09:39:00 | 显示全部楼层

是不是问题有点难度哦,我的问题还没有得到解决。简化一点吧,就考虑2种情况:取整和保留一位小数(还要四舍五入噢)。因为急着处理数据,只能先这样子了,以后再慢慢研究吧。请高手出招啊,小弟不胜感激。

发表于 2005-9-6 11:00:00 | 显示全部楼层
and2008发表于2005-9-6 9:39:00 是不是问题有点难度哦,我的问题还没有得到解决。简化一点吧,就考虑2种情况:取整和保留一位小数(还要四舍五入噢)。因为急着处理数据,只能先这样子了,以...

要处理的数据是什么格式的?是在图中的文本还是在文本文件中?

处理后的数据放到什么地方?是写到图中还是写到文件中?

处理后的数据是什么格式的?是否保留小数点后的零?

五楼程序是根据您的要求写的,不能用吗?

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

本版积分规则

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

GMT+8, 2025-5-17 11:15 , Processed in 0.195848 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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