「数値」の編集履歴(バックアップ)一覧はこちら
「数値」(2017/07/23 (日) 00:23:31) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
#contents
#contents
* 数値
** リファレンスマニュアル
- [[GNU Emacs Lispリファレンスマニュアル: 数>http://www.bookshelf.jp/texi/elisp-manual/21-2-8/jp/elisp_4.html]]
- [[Numbers - GNU Emacs Lisp Reference Manual>http://www.gnu.org/software/emacs/manual/html_node/elisp/Numbers.html]]
** 2進数・8進数・16進数で数値を扱うには
2進数、8進数、16進数はそれぞれ以下のように記述します。
#highlight(lisp) {{
#b10000 ;=> 16
#o020 ;=> 16
#x010 ;=> 16 }}
** 数値を2進数・8進数・16進数表現の文字列に変換するには
8進数、16進数はformat関数を使うことが出来ます
#highlight(lisp) {{
(format "%o" 255) ;=> "377"
(format "%x" 255) ;=> "ff" }}
2進数には対応していないので自前で用意する必要があります。
単に数値を文字列に変換する場合はnumber-to-string関数を使います。
#highlight(lisp) {{
(number-to-string 10) ;=> "10"
(number-to-string 3.14) ;=> "3.14"
(number-to-string (- e)) ;=> "-2.718281828459045" }}
** 任意のビット位置の値を参照する
** 除算の商と余りを求める
商を求めるにはfloorもしくはtruncate関数を、
余りを求めるにはmodもしくは%関数を使用します。
#highlight(lisp) {{
(floor 10 3) ;=> 3
(truncate 10 3) ;=> 3
(floor -10 3) ;=> -4
(truncate -10 3) ;=> -3
(mod 10 3) ;=> 1
(% 10 3) ;=> 1
(mod -10 3) ;=> 2
(% -10 3) ;=> -1 }}
** 絶対値を求める
#highlight(lisp) {{
(abs 100) ;=> 100
(abs -100) ;=> 100 }}
** 小数点を切り上げ・切り捨て・四捨五入するには
各関数ごとに返値が整数型のものと浮動小数点型のものがあります。
||+∞の方向に丸め|-∞の方向に丸め|0の方向に丸め|四捨五入|
|整数 | ceiling | floor | truncate | round |
|浮動小数 | fceiling | ffloor | ftruncate | fround |
#highlight(lisp) {{
(ceiling 3.5) ;=> 4
(floor 3.5) ;=> 3
(truncate 3.5) ;=> 3
(round 3.5) ;=> 4 }}
** 三角関数を計算する
#highlight(lisp) {{
(sin (/ pi 2)) ;=> 1.0
(cos 0) ;=> 1.0
(tan 0) ;=> 0.0 }}
** 対数を計算する
#highlight(lisp) {{
(log e) ;=> 1.0 (自然対数)
(log10 10) ;=> 1.0 (常用対数) }}
** 平方根を求める
sqrt関数を使います。複素数には対応していません。
#highlight(lisp) {{
(sqrt 10) ;=> 3.1622776601683795
; CLライブラリを使う
(require 'cl)
(isqrt 10) ;=>3 }}
** 乱数を生成する
random 関数は疑似乱数を生成します。
引数を省略すると、0からシステムの最大値までの範囲のランダムな整数を返します。
#highlight(lisp) {{
(random N) ;=> ; [0,N) の範囲の整数を返す }}
浮動小数を利用する場合はCLライブラリのrandom*関数を利用します。
#highlight(lisp) {{
(require 'cl)
(random* 1.0) ;=> [0, 1.0) の範囲の浮動小数を返す }}
** 整数と浮動小数点を相互変換する(精度の変換)
(float number)
この関数は、浮動小数点数に変換したnumberを返します。
#highlight(lisp) {{
(float 1);=> 1.0
}}