ftmm 发表于 2019-8-12 16:30:08

我想做个程序运行时间检测,例如regen耗费时间,但是总是提示错误

本帖最后由 ftmm 于 2019-8-12 18:49 编辑

(defun c:pp()
(setq a (rtos (getvar "Cdate")2 6))
(command "regen")
(setq b (rtos (getvar "Cdate")2 6))
(setq c (- (atof b) (atof a)))
(princ c)
)

结果出来的要么是
如果瞬间结束,结果就是:0.00 0.00
如果26秒结束,出来的结果
是一个很大的数值2.59988e-005 2.59988e-005,怎么解?
这个结果其实是对的,大概是26秒左右,但是显示出来的为何会是2个数字?


Bao_lai 发表于 2019-8-13 00:56:08

比喻
a="20190813.005110"===》2019年08月13日00点51分10秒
b="20190813.005210"
c=b-a=0.000100=1.00000e-004是一分钟
cdate得到的结果已经帮你解析了,你这个直接减,在一分钟内得到的结果是正确的,但超过了就要换算了。

satan421 发表于 2019-8-13 08:22:35

princ是个有返回值的函数
(princ expr)
除了打印表达式,还会返回expr的值,所以结果显示了两遍
程序最后加一个(princ)就好了

ftmm 发表于 2019-8-13 09:08:37

本帖最后由 ftmm 于 2019-8-13 16:59 编辑

Bao_lai 发表于 2019-8-13 00:56
比喻
a="20190813.005110"===》2019年08月13日00点51分10秒
b="20190813.005210"

难怪结果经常不正确,个人感觉lisp真的很难用,一些在其他语言里面的简单计算都能折腾半天...
非常感谢解惑。

现在问题是 如果1分50秒开始,2分5秒结束,结果竟然是这个,也要换算,真的很头疼。

20190813.0051500
20190813.0052050
0.0000550

最新补充,我自己已经想出来了,全部转化为秒...然后再用秒来减,就可以了..

ftmm 发表于 2019-8-13 09:09:18

satan421 发表于 2019-8-13 08:22
princ是个有返回值的函数
(princ expr)
除了打印表达式,还会返回expr的值,所以结果显示了两遍


非常感谢,最后加个(princ)就可以了...
页: [1]
查看完整版本: 我想做个程序运行时间检测,例如regen耗费时间,但是总是提示错误