とある要件で小数点以下40位まで割り算する必要があった。
WindowsXPの電卓では無理(有効桁数32桁)なので、elispの勉強がてら書いてみた。
(defun div (dividend divisor precision &optional answer) (if (< precision 0) answer (setq quotient (truncate (/ dividend divisor))) (setq answer (concat answer (format "%d" quotient))) (if (= quotient 0) (div (* dividend 10) divisor (1- precision) answer) (div (* (% dividend divisor) 10) divisor (1- precision) answer)))) (div 4999 12350 40) ; => "04047773279352226720647773279352226720647" (/ 4999 12350.0) ; => 0.4047773279352227
時間があればバージョンアップ予定だが、ちょっとした検証には耐えられそう。
- 作者: るびきち
- 出版社/メーカー: 技術評論社
- 発売日: 2011/11/26
- メディア: 単行本(ソフトカバー)
- 購入: 5人 クリック: 220回
- この商品を含むブログを見る