Roy_043 发表于 2022-7-5 18:04:49

抢手货这与32位整数的范围有关。
要解决此问题,必须使用实数而不是整数进行计算:
(rtos (* (float day) 24 60 60) 2 0)

cadsterdyne 发表于 2022-7-5 18:06:26

非常感谢Roy_043
现在我看到32位和64位大于。
32bit=4gb RAM。
 
 
谢谢大家的帮助。

Lee Mac 发表于 2022-7-5 18:12:22

 
请注意,限制不是机器上安装的RAM数量的结果。
 
与其他编程语言不同,其他编程语言允许您严格指定变量的精确数据类型,并且在涉及整数的情况下,区分有符号/无符号16位“短”整数、32位或64位“长”整数,因为数据类型在AutoLISP中是隐含的,当使用整数时,您总是被限制为使用有符号32位整数。
 
这意味着您只能使用范围为2147483648到2147483647(-2^31到(2^31)-1)的整数表示。要表示此范围之外的数值,必须使用AutoLISP real(也称为double),它使用双精度浮点格式以不同的精度存储高达1e308的值。

cadsterdyne 发表于 2022-7-5 18:15:12

非常感谢李。当然,这对我了解与Autolisp相关的概念有很大帮助。
现在,当我详细查找您和其他人在这里提到的所有主题后,我曾经看到的范围为32768到32767的错误将变得更容易理解。
 
谢谢你的帮助

Lee Mac 发表于 2022-7-5 18:21:48

 
不客气!
 
 
是-当试图为getint函数提供一个超出此范围的整数时,可能会出现此错误;这个限制是使用16位有符号整数的早期版本的残余。
页: 1 [2]
查看完整版本: Autolisp中的小数和数学