天宇飞翔12 发表于 2022-1-30 10:36:17

lisp中计算数值大了,计算错误,请大神帮忙

如下语句计算圆管惯性矩,当数值a,d较大时计算结果不对,比如a=650,d=614
准确计算结果应该是1785812130.48,而此句得出计算结果99182417.42
(setq gxj (/(* 1.0 pi (-(expt a 4)(expt d 4) )) 64)))
请大神帮忙看看问题出在哪里,万分感谢{:7_492:}

guosheyang 发表于 2022-1-30 12:03:00

把数据发上来 大伙儿帮你看

天宇飞翔12 发表于 2022-1-30 12:05:04

a=650,d=614

guosheyang 发表于 2022-1-30 16:17:27

(setq a 650.0 d 614.0)

guosheyang 发表于 2022-1-30 16:18:08

(rtos(/(* 1.0 pi (-(expt a 4)(expt d 4) ))64)2 4)

ntwison 发表于 2022-1-30 16:18:26

数值超过整数范围了(expt a 4.0)(expt d 4.0)也可以解决

baitang36 发表于 2022-1-30 21:23:45

fas是32位的,最大整数不能超过2的31次方。数太大就不要用整数,改成实数吧。

xyp1964 发表于 2022-1-30 21:59:02

(setq a 650. d 614.)
(rtos (setq gxj (/(* 1.0 pi (-(expt a 4)(expt d 4) )) 64))2 2)

天宇飞翔12 发表于 2022-2-4 10:50:05

谢谢各位{:7_492:}
页: [1]
查看完整版本: lisp中计算数值大了,计算错误,请大神帮忙