2010/10/20

float を 3 つの整数で表現する

理屈はよく分からないけど float って 3 つの整数で表現できるんだね。 Common Lisp の integer-decode-float がそれをやってくれる。

こんな関数まで標準である Common Lisp って、やっぱり素敵。

(multiple-value-bind (significand exponent integer-sign) (integer-decode-float 0.12345)
(values significand exponent integer-sign
(* (scale-float (float significand) exponent) integer-sign)))
;; => 16569179
-27
1
0.12345

(multiple-value-bind (significand exponent integer-sign) (integer-decode-float -12.345)
(values significand exponent integer-sign
(* (scale-float (float significand) exponent) integer-sign)))
;; => 12944671
-20
-1
-12.345

0 件のコメント: