明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6468|回复: 10

[求助]数字四舍五入?

[复制链接]
发表于 2008-11-11 19:47:00 | 显示全部楼层 |阅读模式

cad中如何选定某些数字,对其的小数位数进行特殊制定控制?四舍五入?

比如3.14159

如果我需要2位小数,可以把数字变成3.14,

如果要3位,就继续变成3.142

如我再选择这个"3.142",希望变成5位,就又能把这个数字变回3.14159

也就是希望能对这个数字的真实数值,有一个记忆功能

发表于 2008-11-15 12:54:00 | 显示全部楼层
如果仅仅是四舍五入,7楼可行。
如果要浮点数相等判断,应使用equal函数。
回复 支持 1 反对 0

使用道具 举报

发表于 2008-11-12 21:56:00 | 显示全部楼层
本帖最后由 作者 于 2008-11-12 21:58:14 编辑

(read (rtos 数 2 精度))
回复 支持 1 反对 0

使用道具 举报

发表于 2008-11-11 21:37:00 | 显示全部楼层

楼主的需求正好是我的需要。

只是我的需要更简单点,只需对一些数字进入四舍五入!

哪位大侠能做做贡献啊?!

发表于 2008-11-11 22:00:00 | 显示全部楼层
  1. ;;;四舍五入---------------------------------------------------
  2. ;;;(gps->round 3.5   0)--->4
  3. ;;;(gps->round 3.4   0)--->3
  4. ;;;(gps->round 10.25 1) --->10.3
  5. (defun gps->round (num n)
  6.   (cond
  7.    ((= n 0) (fix (+ num 0.5)))
  8.    (t (/ (fix (+ (* (expt 10 n) num) 0.5)) (float (expt 10 n))))
  9.   )
  10. )
发表于 2008-11-11 22:12:00 | 显示全部楼层
<img src="http://1822.img.pp.sohu.com.cn/images/blog/2008/10/21/10/3/11dc4c3eac5g215.jpg" border="0" alt=""/>
发表于 2008-11-11 23:39:00 | 显示全部楼层

命令: (GPS->ROUND  1.255 2)
1.25

但是

命令: (GPS->ROUND  1.355 2)
1.36

为什么呢

发表于 2008-11-12 19:08:00 | 显示全部楼层

;;;四舍五入---------------------------------------------------
;;;(gps->round 3.5   0)--->4
;;;(gps->round 3.4   0)--->3
;;;(gps->round 10.25 1) --->10.3
(defun gps->round (num n)
   (cond
    ((= n 0) (fix (+ num 0.5)))
    (t (/ (fix (+ (* (expt 10 n) num) 0.5)) (float (expt 10 n))))
   )
)

是LSP程序吗,不会用!

我的问题是其实对数字四舍五入,但保留原有位数。比如3.5四舍五入后变成4.0,3.4四舍五入后变成3.0

发表于 2008-11-14 23:40:00 | 显示全部楼层

(= 126   (+ (* 100 1.255 ) 0.50) ) ->nil
(= 136   (+ (* 100 1.355 ) 0.50) ) ->T

(+ (* 100 1.255 ) 0.50)->126.0

(+ (* 100 1.355 ) 0.50)->136.0

(fix (+ (* 100 1.255 ) 0.50))->125

(fix (+ (* 100 1.355 ) 0.50))->136

搞不明白为什么!!

发表于 2008-11-14 23:55:00 | 显示全部楼层
本帖最后由 作者 于 2008-11-14 23:58:29 编辑

fsxm的简洁..不知道我的为什么
(< (* 100 1.255 ) 125.5)->T  ????
(= (* 100 1.355 ) 135.5)->T  ????
  1. ;;;四舍五入---------------------------------------------------
  2. ;;;(GPS->ROUND  1.355 2)--->1.36
  3. ;;;(GPS->ROUND  1.255 2)--->1.26
  4. (defun gps->round (num n)
  5.    (cond
  6.     ((= n 0) (fix (+ num 0.5)))
  7.     (t (/ (fix (read (vl-prin1-to-string (+ (* (expt 10 n) num 1.00) 0.5)))) (float (expt 10 n))))
  8.    )
  9. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-20 20:22 , Processed in 0.203434 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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