此为 Mathematica 4 文档,内容基于更早版本的 Wolfram 语言
查看最新文档(版本11.1)

3.1.1 数的类型

Mathematica 中建立了四种基本的数的类型.

Mathematica 中数的类型

有理数是两个整数的比,化简为最简形式

近似实数通过小数点来区分

近似实数可以有任意的位数

复数中可以有整数或有 理数的成份

复数中也可以有近似实数的成份

数123的几种类型

通过查看数的头可以区分数的不同类型 ( 虽然 Mathematica 中 的数象其它表达式一样有头. 但没有明确的元素来提取它们.)

对象 123 被看作精确整 数,它具有头 Integer

小数点的出现使 123. 被 处理为近似实数,它具有头 Real

检验不同类型的数

NumberQ[x] 检测任何类

5. 作为实数处理,所以 IntegerQ 得出 False

如果经常使用复数,应当注意一些微妙之处. 当输入一个数如 123. 时, Mathematica 把它作为实数处理,而假定它的虚部是精确的 0,有时可能会输入 虚部是具有一定精度的 0,但不是精确的 0 的近似复数.

当虚部是精确数 0 时,Mathematica 把该复数简化为实数

这里虚部只是具有确定精 度的 0,故 Mathematica 保持它为复数形式

区分虚部是精确的 0 和虚部是具有一定精度的 0 的复数,这似乎是太学究气了. 但是,在 3.2.7 节讨论复数的幂和根的解释时,这个区别就很有意义了.

确定数的类型的一种方法是使用 Head[expr] 来找出它的头. 然而, 在许多情况下,最好使用函数如 IntegerQ, 它明确地检测特定的类型. 当这些函数的自变量是所需类型时,该函数返回 True,否则返 False. 因此,除非x是一个整数,否则,IntegerQ[x] 将返回 False.

然而,在做符号运算时,有时用户想把 x 作为整数处理,既使没有给它 明确赋以整数值. 通过明确约定 x/: IntegerQ[x] = True. 可以使 x 不是整数的假定无效. 该约定指明,当用 IntegerQ[x] 测试 x 时, 它将给出结果 True . 然而,应当认识到,该约定并不改变 x 的头. 因此, x 仍然不与 n_Integer. Mathematica 也不自动做基于该约定的推论. 例如,在这个约定下, 它不能单独决定 IntegerQ[x^2] 也为 True.

x 没有头 Integer,所以 Integer 返回 False

这里实际上指定x是一个整数. x/: 指明规则是关

x,而不是 IntegerQ 的上定义使 x 不是整数的 缺省假定无效