龙空技术网

Python数字,类型转换和数学 详细解答

写Python的小可爱 142

前言:

今天同学们对“python小数点后最多几位”可能比较注意,姐妹们都想要知道一些“python小数点后最多几位”的相关内容。那么小编在网络上汇集了一些关于“python小数点后最多几位””的相关知识,希望兄弟们能喜欢,姐妹们快快来了解一下吧!

在本文中,您将了解Python中使用的不同数字,如何从一种数据类型转换为另一种数据类型以及Python支持的数学运算。

Python中的数字数据类型

Python支持整数,浮点数和复数。它们在Python中定义为intfloatcomplex类。

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

复数以形式书写x + yj,其中X是最重要的部分ÿ是虚构的部分。

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

让我们看一个例子:

a = 5print(type(a))print(type(5.0))c = 5 + 3jprint(c + 3)print(isinstance(c, complex))

当我们运行上面的程序时,我们得到以下输出:

<class'int'><类'float'>(8 + 3j)真正

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

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

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

这里有些例子

# Output: 107print(0b1101011)# Output: 253 (251 + 2)print(0xFB + 0b10)# Output: 13print(0o15)

运行该程序时,输出为:

10725313

类型转换

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

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

>>> 1 + 2.03.0

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

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

>>> int(2.3)2>>> int(-2.8)-2>>> float(5)5.0>>> complex('3+5j')(3+5j)

float转换为整数时,数字将被截断(小数部分将被删除)。

Python十进制

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

>>> (1.1 + 2.2) == 3.3False

到底是怎么回事?

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

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

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

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

>>> 1.1 + 2.23.3000000000000003

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

让我们看一下区别:

import decimalprint(0.1)print(decimal.Decimal(0.1))

输出量

0.10.1000000000000000055511151231257827021181583404541015625

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

它也保留了意义。我们知道25.50公斤比25.5公斤更准确,因为它比两位小数两位。

from decimal import Decimal as Dprint(D('1.1') + D('2.2'))print(D('1.2') * D('2.50'))

输出量

3.33.000

注意上例中的尾随零。

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

什么时候使用Decimal而不是float?

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

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

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

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

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

import fractionsprint(fractions.Fraction(1.5))print(fractions.Fraction(5))print(fractions.Fraction(1,3))

输出量

3/251/3

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

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

import fractions# As float# Output: 2476979795053773/2251799813685248print(fractions.Fraction(1.1))# As string# Output: 11/10print(fractions.Fraction('1.1'))

输出量

2476979795053773/225179981368524811/10

此数据类型支持所有基本操作。这里有一些例子。

from fractions import Fraction as Fprint(F(1, 3) + F(1, 3))print(1 / F(5, 6))print(F(-3, 10) > 0)print(F(-3, 10) < 0)

输出量

2/36/5假真正
Python数学

Python提供了类似的模块,mathrandom可以执行不同的数学运算,例如三角函数,对数,概率和统计等。

import mathprint(math.pi)print(math.cos(math.pi))print(math.exp(10))print(math.log10(1000))print(math.sinh(1))print(math.factorial(6))

输出量

3.141592653589793-1.022026.4657948067183.01.1752011936438014720

这是Python math模块中可用的函数和属性的完整列表。

import random print(random.randrange(10, 20))x = ['a', 'b', 'c', 'd', 'e'] # Get random choiceprint(random.choice(x)) # Shuffle xrandom.shuffle(x) # Print the shuffled xprint(x) # Print random elementprint(random.random())

运行上面的程序时,输出如下(由于随机行为,值可能会有所不同)

18 Ë['c','e','d','b','a'] 0.5682821194654443
结尾

最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取。

本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

标签: #python小数点后最多几位