LISP - 数字

  • 简述

    Common Lisp 定义了几种数字。这number数据类型包括 LISP 支持的各种数字。
    LISP 支持的数字类型是 -
    • 整数
    • 比率
    • 浮点数字
    • 复数
    下图显示了 LISP 中可用的数字层次结构和各种数字数据类型 -
    数值类型
  • LISP 中的各种数值类型

    下表描述了 LISP 中可用的各种数字类型数据 -
    序号 数据类型和说明
    1
    fixnum
    此数据类型表示不太大且大部分在 -215 到 215-1 范围内的整数(它取决于机器)
    2
    bignum
    这些是非常大的数字,其大小受为 LISP 分配的内存量限制,它们不是 fixnum 数字。
    3
    ratio
    以分子/分母形式表示两个数字的比率。当 / 函数的参数是整数时,它总是以比率产生结果。
    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
    指数函数。计算x
    5
    expt
    求幂函数,取基数和幂。
    6
    sqrt
    它计算数字的平方根。
    7
    log
    对数函数。如果给定一个参数,则计算其自然对数,否则以第二个参数为底。
    8
    conjugate
    它计算一个数的复共轭。如果是实数,它会返回数字本身。
    9
    abs
    它返回数字的绝对值(或大小)。
    10
    gcd
    它计算给定数字的最大公约数。
    11
    lcm
    它计算给定数字的最小公倍数。
    12
    isqrt
    它给出小于或等于给定自然数的精确平方根的最大整数。
    13
    floor, ceiling, truncate, round
    所有这些函数都将两个参数作为一个数字并返回商;floor返回不大于比率的最大整数,ceiling选择大于比率的较小整数,truncate选择与ratio同号的整数,其绝对值小于ratio的绝对值,并且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