通过示例了解 Python 数字和类型转换
Posted 编程界的小胖子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过示例了解 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
复制代码
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) 这里汇总了我的全部原创及作品源码,关注我以查看更多信息。
以上是关于通过示例了解 Python 数字和类型转换的主要内容,如果未能解决你的问题,请参考以下文章