LISP-数字
CommonLispはいくつかの種類の数を定義します。ザ・number データ型には、LISPでサポートされているさまざまな種類の番号が含まれます。
LISPでサポートされている数のタイプは次のとおりです。
- Integers
- Ratios
- 浮動小数点数
- 複素数
次の図は、LISP-で利用可能な番号階層とさまざまな数値データ型を示しています。
LISPのさまざまな数値タイプ
次の表は、LISPで利用可能なさまざまな数値タイプのデータを示しています。
シニア番号 | データ型と説明 |
---|---|
1 | fixnum このデータ型は、大きすぎず、ほとんどが-215から215-1の範囲の整数を表します(マシンに依存します) |
2 | bignum これらは非常に大きな数であり、サイズはLISPに割り当てられたメモリの量によって制限され、fixnum数ではありません。 |
3 | ratio 分子/分母の形式で2つの数値の比率を表します。/関数は、引数が整数の場合、常に比率で結果を生成します。 |
4 | float 整数以外の数値を表します。精度が上がる4つのfloatデータ型があります。 |
5 | complex これは、#cで示される複素数を表します。実数部と虚数部は、有理数または浮動小数点数の両方である可能性があります。 |
例
main.lispという名前の新しいソースコードファイルを作成し、その中に次のコードを入力します。
(write (/ 1 2))
(terpri)
(write ( + (/ 1 2) (/ 3 4)))
(terpri)
(write ( + #c( 1 2) #c( 3 -4)))
コードを実行すると、次の結果が返されます-
1/2
5/4
#C(4 -2)
数値関数
次の表に、一般的に使用されるいくつかの数値関数を示します。
シニア番号 | 機能と説明 |
---|---|
1 | +, -, *, / それぞれの算術演算 |
2 | sin, cos, tan, acos, asin, atan それぞれの三角関数。 |
3 | sinh, cosh, tanh, acosh, asinh, atanh それぞれの双曲線関数。 |
4 | exp べき乗関数。計算しE X |
5 | expt べき乗関数は、ベースとパワーの両方を取ります。 |
6 | sqrt 数値の平方根を計算します。 |
7 | log 対数関数。1つのパラメーターが指定されると、自然対数が計算されます。それ以外の場合は、2番目のパラメーターがベースとして使用されます。 |
8 | conjugate 数値の複素共役を計算します。実数の場合は、数値そのものを返します。 |
9 | abs 数値の絶対値(または大きさ)を返します。 |
10 | gcd 与えられた数の最大公約数を計算します。 |
11 | lcm 指定された数値の最小公倍数を計算します。 |
12 | isqrt これは、与えられた自然数の正確な平方根以下の最大の整数を与えます。 |
13 | floor, ceiling, truncate, round これらの関数はすべて、2つの引数を数値として受け取り、商を返します。 floor 比率以下の最大の整数を返します。 ceiling 比率よりも大きい小さい整数を選択し、 truncate 比率の絶対値よりも小さい最大の絶対値を持つ比率と同じ符号の整数を選択し、 round 比率に最も近い整数を選択します。 |
14 | ffloor, fceiling, ftruncate, fround 上記と同じですが、商を浮動小数点数として返します。 |
15 | mod, rem 除算の余りを返します。 |
16 | float 実数を浮動小数点数に変換します。 |
17 | rational, rationalize 実数を有理数に変換します。 |
18 | numerator, denominator 有理数のそれぞれの部分を返します。 |
19 | realpart, imagpart 複素数の実数部と虚数部を返します。 |
例
main.lispという名前の新しいソースコードファイルを作成し、その中に次のコードを入力します。
(write (/ 45 78))
(terpri)
(write (floor 45 78))
(terpri)
(write (/ 3456 75))
(terpri)
(write (floor 3456 75))
(terpri)
(write (ceiling 3456 75))
(terpri)
(write (truncate 3456 75))
(terpri)
(write (round 3456 75))
(terpri)
(write (ffloor 3456 75))
(terpri)
(write (fceiling 3456 75))
(terpri)
(write (ftruncate 3456 75))
(terpri)
(write (fround 3456 75))
(terpri)
(write (mod 3456 75))
(terpri)
(setq c (complex 6 7))
(write c)
(terpri)
(write (complex 5 -9))
(terpri)
(write (realpart c))
(terpri)
(write (imagpart c))
コードを実行すると、次の結果が返されます-
15/26
0
1152/25
46
47
46
46
46.0
47.0
46.0
46.0
6
#C(6 7)
#C(5 -9)
6
7