・ 計算誤差について

小数点以下を切り捨てるには 

(fix real_a)

とします
ところが、コンピューターならではの落とし穴もあるようです

コマンド: (fix (- 17.9 5.9))
11

なんと 17.9-5.9=12 にならないらしいのです
コンピューター内部では循環小数になってます

コマンド: (rtos (- 17.9 5.9) 2 100)
"11.99999999999999"

これを切り捨てるから 12 でなくて 11 となってしまうわけですね
あまり、お目にかからないかもしれませんが、計算結果があわないときは疑ってみましょう

ちなみに、簡単に誤差を丸めるには

(fix (atof (rtos real_a)))

とかすると良いでしょう
システム変数 LUPREC で丸めて整数部を返してくれます

 

参考文献:「おぉとりすぷの広場」 記事番号<17567><17592>