Lt Dan's l 发表于 2022-7-6 10:21:52

将(rtos x 2 2)应用于lis

我正在尝试转换此列表
(0.33 0.5 0.75 1.0 1.01 1.25 1.5 1.51 2.0 2.25 2.5 3.0 3.01 3.02 3.25 3.5 3.9 4.0)
进入
("0.33" "0.50" "0.75" "1.00" "1.01" "1.25" "1.50" "1.51" "2.00" "2.25" "2.50" "3.00" "3.01" "3.02" "3.25" "3.50" "3.90" "4.00")
 
这个问题快把我逼疯了!!!

David Bethel 发表于 2022-7-6 10:29:05

也许是这样:
 

(setvar "DIMZIN" 0)
(setq l1 '(0.33 0.2 0.5 1.0 1.01 1.22))
(setq l2 (mapcar '(lambda (s) (rtos s 2 2)) l1))
(prin1 l2)


-大卫

BlackBox 发表于 2022-7-6 10:30:20

只是需要考虑一下。。。
 
没有理由将dimzin设置为零,因为(rtos 2 2)将执行OP想要的操作。然而,如果您确实更改了dimzin,那么(IMO)它*应该*在例程完成时更改回其原始状态眨眼:
 
基于David对mapcar+lambda的恰当使用。。。
 

(defun RM:ListReal->ListStr (l / l2)
;; © RenderMan
;; Example: (RM:ListReal->ListStr l1)
;; Where l1 =
;; (setq l1 (list 0.33 0.5 0.75 1.0 1.01 1.25 1.5 1.51 2.0 2.25 ;| etc |)
(if (and l
          (= 'LIST (type l)))
   (setq l2 (mapcar (function (lambda (x) (rtos x 2 2))) l))))

 
 
希望这有帮助!

alanjt 发表于 2022-7-6 10:37:33

RTO不会覆盖dimzin设置(删除前导/尾随零)。如。
Enter new value for DIMZIN <12>:

Command: (rtos 0.1 2 2)
".1"
 
如果列表有子列表呢?
 
值得深思。。。
(defun AT:RToSLst (lst unit prec)
(mapcar
   (function (lambda (x)
               (cond
               ((eq (type x) 'LIST) (AT:RToSLst x unit prec))
               ((member (type x) (list 'INT 'REAL)) (rtos x unit prec))
               (x)
               )
             )
   )
   lst
)
)eg。
哦,是的,在对其发出类型之前,不需要使用和检查l是否是有效变量;类型将在nil上工作。此外,您不需要设置第二个变量。

BlackBox 发表于 2022-7-6 10:41:21

 
 
我感谢你的纠正,艾伦(反过来,我向大卫道歉!)。
 
尽管有教育上的修正,我的陈述的后半部分(将Dimzin改回)仍然成立,不是吗?
 
和往常一样,我感谢你分享这些知识:眨眼:

alanjt 发表于 2022-7-6 10:45:00

同意,随时。
你看了我的潜艇吗?

Lee Mac 发表于 2022-7-6 10:47:33

 
如果列表中有点对呢?
 
更多思考:
 

(defun LM:rtoslst ( l u p )

(cond
    ( (member (type l) '(INT REAL)) (rtos l u p) )
    ( (atom l) l )
    ( (cons (LM:rtoslst (car l) u p) (LM:rtoslst (cdr l) u p)) )
)

)

alanjt 发表于 2022-7-6 10:52:52

 
爆笑
在回家的路上,我想到了点对(完全忘记了),我只知道我到家的时候你会回答这个问题。

David Bethel 发表于 2022-7-6 10:57:17

 
在大多数情况下,我同意这一说法。在DIMZIN的情况下,我认为任何使用(rtos)(angtos)的例程都应该隐式地设置DIMZIM以匹配所需的结果。重置它将是一个完整的健壮例程中的一般家务活。
 
 
 
至于子列表,nils和none numberp atoms,我倾向于一个错误。我的想法是,最初需要将实数列表转换为字符串。如果原子不是一个数字,那么有些东西就搞糟了,应该这样传递。我的0.02美元-David

BlackBox 发表于 2022-7-6 11:01:30

 
 
这些都是很好的观点。
 
对你来说可能只有0.02美元,但我最近换成了津巴布韦元。。。前几天我买了一个巨无霸,花了我980.75美元!(开玩笑!)
 
我感谢你的澄清,大卫!:斯坦:
页: [1] 2
查看完整版本: 将(rtos x 2 2)应用于lis