yoyoho 发表于 2012-12-28 17:17:23

[求助]在COMMAND下使用CAL与LISP下使用CAL,为何计算结果会不同呢?

指令: CAL
>> 表示式: 300*300
90000

指令: (CAL "300*300")
24464

指令: CAL >> 表示式: 500*300
150000

指令: (CAL "500*300")
18928

指令: CAL
>> 表示式: 100*100000
10000000

指令: (CAL "100*100000")
-27008

什么原因呢?
是不是CAL指令不适用于LISP使用吗?
求高手解答,谢谢!

ll_j 发表于 2012-12-28 17:35:02

cal是cad自带的简易计算程序,内核还是Lisp或C(ADS)等接口语言,所以,使用时需要遵循常规计算的规则,即整数计算得整数,实数计算得实数。
用cal作为函数时,把数值转变为实数,计算结果就正确了。
按说即使作为整数,计算也应该是正确的,但cal开了一定的位数来存储计算结果,这个限制就是整数32768,如果整数结果不超过32768,显示就是正确的,否则就错误。

yoyoho 发表于 2012-12-28 18:28:33

感谢 ll_j 回覆!

指令: (COMMAND "CAL" "" "300*300")
90000
这样执行O.K.
请问如何取得90000之数值

sunny20102 发表于 2012-12-28 21:15:55

(command "cal" "300.*300")
结果: 90000.0

2F正解,其实-32768~32767区间有效
页: [1]
查看完整版本: [求助]在COMMAND下使用CAL与LISP下使用CAL,为何计算结果会不同呢?