Python 数字包含四种数据类型:普通整数、长整数、浮点数和复数。它们不仅支持简单的算术计算,还可以作为复数用于量子计算。在本教程中,我们将尝试通过示例来解释它们中的每一个。
让我们看看Python 中的数字是什么?与 Python 中的其他类型一样,数字也是对象。它们可以存储整数、实数或合 数。Python 数字是不可变对象,因此值的任何更改都会导致创建新对象。通常,将数值分配给变量将创建数字对象。
>>> num = 10 + 5j # 数字对象已创建 >>> print(num) (10+5j) >>> print(type(num)) # 数字是复数类型 <class 'complex'> >>> print(id(num)) # 'num' 在内存中的初始地址 2819128990512 >>> num = 11 + 6j # 'num' 获得一个新值 >>> print(num) (11+6j) >>> type(num) # 'num' 仍然是复杂类型 <class 'complex'> >>> id(num) # 值的变化导致 "num" 有一个新的内存地址 2910237203312
Python 数字——数字数据的类型
有趣的是,Python 2.x 有四种内置数据类型(int、long、float 和 complex)来表示数字。后来的 Python 3.x 删除了 long 并将 int 类型扩展为无限长度。
int(整型)
int 类型表示Python 中的基本整数数据类型。Python 2.x 中的普通整数的最大大小可达sys.maxint的值 。
而在 3.x 中,int 类型被提升为具有无限长度,从而消除了 long。
long(长型)
一个无限长的整数。直到 Python 2.x 结束,整数被允许溢出并变成 long。此行为自 3.0 以来发生了变化,其中整数取代了长整数。
float(浮点型)
浮点数表示二进制浮点数。在表达式中使用浮点变量会自动将相邻的 long 和 int 转换为浮点数。
>>> x = 9.999 >>> type(x) <type 'float'>
complex(复数型)
这种类型的数字有实部和虚部。例如 – 表达式 ( n1 + n2j) 表示一个复数类型,其中 n1 和 n2 都是分别表示实部和虚部的浮点数。
>>> x = 3 + 4j >>> type(x) <class 'complex'> >>> x.real 3.0 >>> x.imag 4.0
Python 数字——关键点
A. 数字类型按以下顺序自动向上转换。
Int → Long → Float → Complex
B.虽然 Python 3.x 中的整数可以是任意长度,但浮点型数字只能精确到小数点后十五位。
C.通常,我们使用基于十进制(基数为 10)的数字系统的数字。但有时,我们可能需要使用其他数字系统,例如二进制(基数 2)、十六进制(基数 16)和八进制(基数 8)。\
在 Python 中,我们可以使用适当的前缀处理这些数字。见下文。
>>> x = 0b101 >>> print(x) 5 >>> type(x) <type 'int'> >>> print(0b101 + 5) 10 >>> print(0o123) 83 >>> type(0x10) <type 'int'>
D.如果要在 Python 中测试数字的类类型,则应使用 isinstance() 函数。
isinstance(object, class)
这是示例
>>> isinstance(2.2, float) True
E.如果在表达式中使用混合数据类型,则所有操作数都将变为所使用的最复杂类型。
>>> 2 + 3.8 5.8
F.在 Python 中对整数进行除法时要小心。
在 Python 2.x 中,除法 (/) 将返回一个整数商作为输出。
Python
复制代码
>>> 7/2 3
在 Python 3.x 中,除法 (/) 将返回一个浮点商作为输出。
>>> 7/2 3.5
G. 底运算符 (//) 返回整数商,模运算符 (%) 给出余数。不过您可以通过使用 divmod() 函数来一起获得这两者。
>>> divmod(7, 2) (3, 1) >>> 7 % 2 1 >>> 7 / 2 3.5 >>> 7 // 2 3
Python 中的类型转换(强制转换)
在 Python 中,将任何数字数据类型转换为另一种非常容易。我们将这个过程称为 Pythonic 术语中的强制转换。
如果操作数之一是浮点数,则基本操作(如加法、减法)强制整数隐式(默认)为浮点数。
>>> 2 + 4.5 6.5
在上面的例子中,第一个整数(2)变成了一个浮点数(2.0)进行加法,输出的也是一个浮点数。
然而,Python 给出了否定的答案。内置函数,如 int()、float() 和 complex() 以在类型之间进行显式转换。这些函数甚至可以将字符串转换为数字。
>>> int(3.7) 3 >>> int(-3.4) -3 >>> float(3) 3.0 >>> complex(4 + 7j) (4+7j)
请注意,如果您将浮点数转换为整数,则数字将被截断(即接近零的整数)。
处理 Python 数字的外部类
正如你在上面读到的,Python 的内置浮点类有一个限制,可以控制精度高达小数点后十五位。但是,也存在其他限制,因为它完全取决于浮点数的计算机实现。例如,请参阅下面的小数点问题。
>>> 1.1 + 3.2 4.300000000000001
为了克服此类问题,我们可以使用 Python 中的小数模块。
Python 十进制
十进制模块提供了大多数人都熟悉的定点和浮点运算实现。与精度高达 15 位小数的浮点数不同,decimal 模块接受用户定义的值。它甚至可以保留编号中的有效数字。
import decimal print(0.28) print(decimal.Decimal(0.28)) print(decimal.Decimal('5.30'))
输出
0.28 0.2800000000000000266453525910037569701671600341796875 5.30
Python 分数
Python 打包了一个名为“fractions”的模块来处理小数。
分数由分子和分母组成;两者都是整数数据类型。该模块启用有理数算术功能。
下面是一个创建和使用分数类型对象的简单示例。
import fractions print(fractions.Fraction(2.5)) print(fractions.Fraction(5.2)) print(fractions.Fraction(3,5)) print(fractions.Fraction(1.3)) print(fractions.Fraction('3.7'))
输出-
5/2 5854679515581645/1125899906842624 3/5 5854679515581645/4503599627370496 37/10
Python 数学
Python 公开了一些内置函数来执行简单的数学计算。
例如 – abs(), cmp(), max(), min(), round()。
print(round(55.26,1)) print(round(66.36,-1))
输出 -
55.3 70.0
除了上述方法,我们还可以使用 Python 中的 math 模块。它提供了以下常用功能。
以下是使用 ceil() 函数的一些示例。
示例 1
import math
x = math.ceil(3.5) print(x) print(math.ceil(2 + 4.2))
输出 –
4 7
示例 2
from math import ceil x = 9 / 4 y = ceil(x) print(y)
输出 -
3
快速总结——Python 数字
借助 Python 数字和 math 模块,您可以在 Python 中进行任何基础到高级计算。我们希望本教程能够帮助到您,博主也在学习进行中,如有什么错误的地方还望批评指正。如果您喜欢这篇文章并有兴趣看到更多此类文章,可以看看这里(Github/Gitee) 这里汇总了我的全部原创及作品源码,关注我以查看更多信息。