乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: wimal

[编程交流] 成员的位置

[复制链接]

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 15:32:02 | 显示全部楼层
 
“doubles”指的是双精度浮点格式数据,或AutoLISP reals。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-5 15:37:39 | 显示全部楼层
 
延迟时刻!
感谢您的澄清。
回复

使用道具 举报

10

主题

253

帖子

75

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
223
发表于 2022-7-5 15:40:52 | 显示全部楼层
另一个:
  1. (setq lst '(1 2 3 4.5 6 1.2))
  2. (cons (setq a (apply 'max lst)) (- (length lst) (length (member a lst))))
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 15:44:11 | 显示全部楼层
@李:
您的代码可以返回“max fuzz”值,而不是真正的最大值。为什么你认为这样更好?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 15:45:43 | 显示全部楼层
 
罗伊,我不确定我是否理解你的意思-我的代码将返回被视为等于最大值的项目索引,并在代码中给出的容差范围内。我将此作为依赖函数(如成员/vl位置)来确定使用max函数计算的最大值位置的方法的替代方法,我认为由于使用双精度浮点格式存储的值的舍入,该函数不可靠。
 
当然,最简单的方法是:
  1. (defun max-idx ( lst / idx rtn )
  2.    (setq rtn (cons (car lst) 0)
  3.          idx 1
  4.    )
  5.    (foreach itm (cdr lst)
  6.        (if (< (car rtn) itm)
  7.            (setq rtn (cons itm idx))
  8.        )
  9.        (setq idx (1+ idx))
  10.    )
  11.    rtn
  12. )
回复

使用道具 举报

28

主题

317

帖子

292

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 2022-7-5 15:47:42 | 显示全部楼层
同意。关于(max,与int列表中的单个实数相同,(max返回浮点。我甚至会从“我不喜欢依赖”变为“它不可靠”
给猫去皮的方法太多了,很难找到一只不去皮的猫。可怜的猫
  1. (defun foo (l / p)
  2.   (cons (nth (setq p (last (vl-sort-i l '<))) l) p)
  3. )
  1. (defun foo ( l / i m ) ; By Lee Mac.
  2. (setq m (apply 'max l) i -1)
  3. (vl-some '(lambda ( x ) (setq i (1+ i)) (if (equal x m 1e- (cons x i))) l)
  4. )
  5. (defun PosOfMax (lst / fnd)
  6. (cons (setq fnd (apply 'max lst)) (vl-position fnd lst))
  7. )
  8. (setq lst (list 0.8 0.9 (- 1.0 1e-9) 1.0))

注:在BricsCAD中,max函数没有“int to float”问题Jef!已经提到。
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 15:50:55 | 显示全部楼层
@Roy,正如我在之前的帖子中所提到的,我避免使用诸如“PosOfMax”函数中使用的方法,因为我发现这些方法在与double一起使用时不可靠。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 15:55:23 | 显示全部楼层
好的,AutoCAD中的min和max函数具有这种意外行为(正如Jef!已经提到的)。但对于只包含双精度或整数的列表,PosOfMax就可以了。或者vl位置也存在一些AutoCAD问题?
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 15:57:21 | 显示全部楼层
只是为了好玩:
 
  1. 13
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 16:02:19 | 显示全部楼层
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-15 04:44 , Processed in 1.783946 second(s), 81 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表