計算結果を分数から小数にしたい - lisp-cookbook-ja/common-lisp GitHub Wiki
計算結果を分数から小数にしたい
分数の状態は、計算結果が ratio となっているので float 関数で変換します。
(float (/ 2 3)) ;=> 0.6666667
double-floatにしたい場合は二番目の引数に適当に double-float を指定します。
(float (/ 2 3) 1.0d0) ;=> 0.6666666666666666d0
変換するだけならば、coerce を使ったり適当に演算したりという方法もあります。
(coerce 2/3 'double-float) ;=> 0.6666666666666666d0
(* 2/3 1.0d0) ;=> 0.6666666666666666d0
(+ 2/3 0.0d0) ;=> 0.6666666666666666d0
計算結果を小数から分数にしたい
rationalまたはrationalizeを使います。
(rational 0.6666667)
;=> 11184811/16777216
(rationalize 0.6666667)
;=> 2/3
rationalが厳密に等しい有理数を返すのにたいし、rationalizeは浮動小数点表現の精度を考慮した近似値を返します。