分类
文章

Python数字,类型转换和算术运算

Python数字是一组四个数据类型:普通整数,长整数,浮点数和复数。它们不仅支持简单的算术计算,而且还可以作为复数用于量子计算。在本教程中,我们将尝试通过示例进行解释。

让我们看看Python中的数字是什么?像Python中的其他类型一样,数字也是对象。它们可以存储整数,实数或复合数 。Python数字是不可变的对象,因此值的任何更改都将导致创建新对象。通常,将数字值分配给变量将获得创建的数字对象。


>>> num = 10 + 5j # The number object got created.
>>> print(num)
(10+5j)
>>> type(num) # The number is of complex type.
<class 'complex'>
>>> id(num) # The initial address of 'num' in memory.
10171888
>>> num = 11 + 6j # The 'num' gets a new value.
>>> print(num)
(11+6j)
>>> type(num) # The 'num' is still of complex type.
<class 'complex'>
>>> id(num) # Change in value caused 'num' to have a new memory address.
10171952

Python数字,类型转换和数学

Python数字–数值数据的类型

有趣的是,Python 2.x具有四种内置数据类型(int,long,float和complex)来表示数字。后来,Python 3.x删除了long类型,并将int类型扩展为无限长度。

整型

int类型表示Python中的基本整数数据类型 。Python 2.x中的纯整数最大大小为sys.maxint的值。

在3.x中,将int类型提升为无限长度,从而消除了长整型。


>>> x = 9
>>> type(x)
<type 'int'>
长型

无限长度的整数。直到Python 2.x结束,整数才被允许溢出并变成长整数。从3.0开始,此行为发生了变化,在此int替换了long。


>>> x = 9999999999
>>> type(x) # In Python 2.x, the type will be long. While in 3.x, it is int irrespective of the size.
<type 'long'>
浮点型

浮点数表示二进制浮点数。在表达式中使用float变量会自动将相邻的long和int转换为float。


>>> x = 9.999
>>> type(x)
<type 'float'>
复杂类型

此类型的数字包含实部和虚部。例如–表达式(n1 + n2j)表示复杂类型,其中n1和n2均为分别表示实部和虚部的浮点数。


>>> x = 3 + 4j
>>> type(x)
<class 'complex'>
>>> x.real
3.0
>>> x.imag
4.0
Python数字–关键点
    1. 号码类型将按照以下顺序自动上传。
      整数→长→浮动→复数
    2. 尽管Python 3.x中的整数可以是任意长度,但浮点数只能精确到15个小数位。
    3. 通常,我们使用基于十进制(以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'>
    4. 如果要在Python中测试数字的类类型,则应使用isinstance()函数。
      
      isinstance(object, class)

      这是例子。

      
      >>> isinstance(2.2, float)
      True
    5. 如果在表达式中使用混合数据类型,则所有操作数将变为使用的最复杂类型。
      
      >>> 2 + 3.8
      5.8
    6. 在Python中分割整数时要小心。
      在Python 2.x中,除(/)将返回整数商作为输出。
      
      >>> 7/2
      3

      在Python 3.x中,除(/)将返回浮点商作为输出。

      
      >>> 7/2
      3.5
    7. 底数运算符(//)返回整数商,而mod(%)运算符给出余数。但是,您可以通过使用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的内置float类在将精度控制到小数点后十五位方面有一个限制。但是,还有其他限制,因为它完全取决于浮点数的计算机实现。例如,请参见下面的小数点问题。


>>> 1.1 + 3.2
4.300000000000001

为了克服这类问题,我们可以在Python中使用十进制模块。

Python十进制

十进制模块提供了大多数人都熟悉的定点和浮点算术实现。与精度最高到15位小数的浮点数不同,十进制模块接受用户定义的值。它甚至可以保留有效数字。


import decimal

print(0.28)

print(decimal.Decimal(0.28))

print(decimal.Decimal('5.30'))

Output


0.28
0.2800000000000000266453525910037569701671600341796875
5.30

Python分数

Python打包了一个名为”分数”的模块来处理小数。

小数结合了分子和分母。两者都是整数数据类型。此模块启用有理数算术功能。

这是创建和使用分数类型对象的简单示例。


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'))

Output


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))

Output


55.3
70.0

除了上述方法外,我们还可以在Python中使用math模块。它提供以下常用功能。

以下是使用ceil()函数的一些示例。

示例1

导入数学


x = math.ceil(3.5)
print(x)
print(math.ceil(2 + 4.2))

Output


4
7

示例2


from math import ceil
 
x = 9 / 4
y = ceil(x)
print(y)

Output


3

快速总结– Python数字

借助Python数字和math模块,您可以在Python中进行任何基本到高级的计算。我们希望本教程能够提升您的学习精神。

发表评论

电子邮件地址不会被公开。 必填项已用*标注