原帖由 yrgui 于 2008-8-20 12:07 发表
! a3 b$ [1 ?/ a: W, Q请教一个lisp里面计算精度的问题
3 f! I& ?3 G% D& l8 O0 M如:' ]& H+ M# z0 @ ^1 y+ \
(- 4.5 1.0e-6)结果显示还是4.5,检验(= (- 4.5 1.0e-6) 4.5)结果为 nil,这就是说其实已经减去了,如何让它报出精确的结果呢?
+ T# n o6 g+ m8 c& p; j
9 N: p" R. P6 c: _+ m" s* g% q5 H7 |# k
首先声明,只能同学相称,我算不得什么高手,也只是在学习中% O3 d$ K2 m! A3 E: ]2 v
7 d4 Y; X2 {+ F" O, v% I! Q! p看看下例,不知道满意吗?* f5 i9 z$ ?% _2 \" z u
(setq a (rtos (+ 1.0 (- 4.5 (atof (rtos 1.0e-06 2 14)))) 2 14))
2 h! w4 ^5 h( D, j$ j5 ortos 实、整数转字串 后面的2代表以小数表示,14代表精度取14位
) C& i) V! x# L9 k9 U- Q$ Watof字串转实、整数,与4.5进行差值运算/ ?9 e' W) h0 }0 D2 _
具体的可以再查相关函数解释 |