Menu Close

Python 数字类型,类型强制转换和隐形转换,Python 十进制,Python分数和数学模块

1.Python 中的数字数据类型

Python 支持整数数据类型,浮点数数据类型和复数数据类型。 在 Python 中,它们被定义为int,float和complex类。

整数和浮点由存在或不存在小数点分隔。 例如,5 是整数,而 5.0 是浮点数。

复数以x + yj的形式编写,其中x是实数部分,y是虚数部分。

我们可以使用type()函数来了解变量或值属于哪个类,并且可以使用isinstance()函数检查其是否属于特定类。

让我们看一个例子:

例1.1. 检查一个数字的数据类型

results

尽管整数可以是任意长度,但浮点数最多只能精确到 15 个小数位(第 16 位不准确)。

我们每天处理的数字是十进制(以 10 为底)的数字系统。 但是计算机程序员(通常是嵌入式程序员)需要使用二进制(基数 2),十六进制(基数 16)和八进制(基数 8)数字系统。

在 Python 中,我们可以通过在数字之前添加前缀来表示这些数字。 下表列出了这些前缀。

数字系统 字首
二进制 ‘0b’或’0B’
八进制 ‘0o’或’0O’
十六进制 ‘0x’或’0X’

这里有些例子

2.类型转换

我们可以将一种数字转换为另一种数字。 这也称为强制。

如果操作数之一为浮点型,则加法,减法等操作会强制整数隐式(自动)转换为浮点数。

例2.1 整数强制整数隐式(自动)转换为浮点数

结果

我们可以在上面看到 1(整数)被强制转换为 1.0(浮点数)以进行加法,结果也是一个浮点数。

我们还可以使用int(),float()和complex()之类的内置函数在类型之间进行显式转换。 这些函数甚至可以从字符串转换。

例2.2 数字数据类型的强制转换

从float转换为整数时,该数字将被截断(删除小数部分,不是四舍五入)。

3.Python 十进制

Python 内置类float会执行一些可能令我们惊讶的计算。 我们都知道 1.1 和 2.2 的总和是 3.3,但是 Python 似乎不同意。

到底是怎么回事?

事实证明,浮点数在计算机硬件中以二进制分数形式实现,因为计算机只能理解二进制(0 和 1)。 由于这个原因,我们知道的大多数十进制小数不能准确地存储在我们的计算机中。

让我们举个例子。 我们不能将分数 1/3 表示为十进制数。 这将给出 0.33333333… 无限长,我们只能对其进行近似。

事实证明,十进制小数 0.1 会导致无限长的二进制分数 0.000110011001100110011…,而我们的计算机仅存储了有限数量的二进制数。

这只会接近 0.1,但永远不会相等。 因此,这是我们计算机硬件的局限性,而不是 Python 中的错误。

为了克服这个问题,我们可以使用 Python 随附的十进制模块。 浮点数的精度最高可以达到 15 个小数位,而十进制模块则具有用户可设置的精度。

让我们看一下区别:

输出

当我们要在学校学习的十进制计算时,使用此模块。

我们知道 25.50 公斤比 25.5 公斤更准确,因为前者更精确到小数点后两位。

例3.2导入十进制模块进行精确计算

输出

注意上例中小数点后面的零。也表示精确度

我们可能会问,为什么不每次都执行Decimal而不是float? 主要原因是效率。 浮点运算必须比Decimal运算更快。

何时使用十进制代替浮点数?

在以下情况下,我们通常使用十进制。

  • 当我们编程需要精确表示十进制的金融应用时。
  • 当我们要控制所需的精度水平时。
  • 当我们想实现有效小数位的概念时。

4.Python 分数

Python 通过其fractions模块提供了涉及小数的运算。

小数具有分子和分母,它们都是整数。 该模块支持有理数算法。

我们可以通过多种方式创建Fraction对象。 让我们看看它们。

输出

从float创建Fraction时,我们可能会得到一些异常的结果。 这是由于上一节中讨论的二进制浮点数表示不完善所致。

幸运的是,Fraction也允许我们使用字符串实例化。 使用十进制数字时,这是首选选项。

例4.2 分数以浮点数或字符串数据类型输出

输出

输出

Python数学模块
Python数学模块

5.Python 数学模块

Python 提供math和random之类的模块来执行不同的数学运算,例如三角函数,对数,概率和统计等。

例5.1 数学模块


 

 

wer

除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!
Posted in Python教程