找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 775|回复: 7

[求助] mapcar '+小数变成整数?

[复制链接]

已领礼包: 5060个

财富等级: 富甲天下

发表于 2015-6-8 16:46:43 | 显示全部楼层 |阅读模式

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

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

×
cad命令行执行这句:(mapcar '+ '(498772.0 616700.0 ) '(0.5 0.5))


结果为 (498773.0 616701.0)
如果是减,则不变,很明显是四舍五入,但查了一下精度的变量是4位。
如果只是(+ 498772.0 0.5)则结果返回正确。

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

已领礼包: 5588个

财富等级: 富甲天下

发表于 2015-6-8 17:14:40 | 显示全部楼层
(mapcar '(lambda(x) (fix (+ x 0.5))) '(498772.0 616700.0))

点评

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

使用道具 举报

已领礼包: 5060个

财富等级: 富甲天下

 楼主| 发表于 2015-6-8 17:24:26 | 显示全部楼层
HLCAD 发表于 2015-6-8 17:14
(mapcar '(lambda(x) (fix (+ x 0.5))) '(498772.0 616700.0))

我不是要int,而是要real

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

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2015-6-8 21:33:01 来自手机 | 显示全部楼层
用rtos就可看到**

点评

比如坐标相加,这个rtos要放在哪里呢? (defun pt_sub(pt_temp1 pt_temp2 / x1 x2 y1 y2 z1 z2 x y z ) (mapcar '- (rtos pt_temp1 2 2) (rtos pt_temp2 2 2)) )  详情 回复 发表于 2015-6-9 09:04
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5588个

财富等级: 富甲天下

发表于 2015-6-9 07:57:13 | 显示全部楼层
(mapcar '(lambda(x) (float (fix (+ x 0.5)))) '(498772.4 616700.4))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5060个

财富等级: 富甲天下

 楼主| 发表于 2015-6-9 09:04:41 | 显示全部楼层
iLisp 发表于 2015-6-8 21:33
用rtos就可看到**

比如坐标相加,这个rtos要放在哪里呢?
(defun pt_sub(pt_temp1 pt_temp2 / x1 x2 y1 y2 z1 z2 x y z )
  (mapcar '- (rtos pt_temp1 2 2) (rtos pt_temp2 2 2))
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5060个

财富等级: 富甲天下

 楼主| 发表于 2015-6-9 10:06:24 | 显示全部楼层
搞定
(defun pt_sub(pt_temp1 pt_temp2 / x1 x2 y1 y2 z1 z2 x y z )
  (mapcar '(lambda(x y) (- (atof (rtos x 2 2)) (atof (rtos y 2 2))) )
          pt_temp1
          pt_temp2
  )
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5060个

财富等级: 富甲天下

 楼主| 发表于 2015-6-9 11:12:57 | 显示全部楼层
本帖最后由 xinxirong 于 2018-1-12 14:41 编辑

VisualLisp显示的数是经过四舍五入的,实际上还是有八位的精度,用line命令画线就知道了命令: (prin1-real (mapcar '+ '(498772.0 616700.0 ) '(0.5 0.5)))
"( 498772.5 616700.5 )"

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-11 03:23 , Processed in 0.369100 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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