通过示例了解 Python 数字和类型转换|Python 主题月

5,727 阅读8分钟

本文正在参加「Python主题月」,详情查看 活动链接

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

image.png

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 中,我们可以使用适当的前缀处理这些数字。见下文。

进制Base要使用的前缀
二进制Base-2'0b' 或 '0B'
八进制Base-8'0o' 或 '0O'
十六进制Base-16'0x' 或 '0X'
>>> 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 中,除法 (/) 将返回一个整数商作为输出。

>>> 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 模块。它提供了以下常用功能。

函数描述
abs(x)x 的绝对值:x 和零之间的(正)距离。
ceil(x)x的上限:不小于x的最小整数
cmp(a, b)-1 如果 a < b,0 如果 a == b,或者 1 如果 a > b
exp(x)x 的指数:ex
floor(x)x 的下限:不大于 x 的最大整数
log(x)x 的自然对数,对于 x> 0
log10(x)x> 0 时 x 的以 10 为底的对数。
max(x1, x2,…)最大的参数:最接近正无穷大的值
min(x1, x2,…)它的最小参数:最接近负无穷大的值
modf(x)二项元组中 x 的小数部分和整数部分。两个部分与 x 共享相同的符号。整数部分强制转换为浮点数。
pow(x, y)x**y 的值
round(x [,n])x 从小数点开始四舍五入为 n 位。
sqrt(x)x > 0 时 x 的平方根
pi数学常数 π。
e数学常数 e。

以下是使用 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) 这里汇总了我的全部原创及作品源码,关注我以查看更多信息。

🧵 更多相关文章

往日优秀文章推荐:

如果你真的从这篇文章中学到了一些新东西,喜欢它,收藏它并与你的小伙伴分享。🤗最后,不要忘了❤或📑支持一下哦