前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >详解Python中的各种数字类型

详解Python中的各种数字类型

作者头像
Python小屋屋主
发布2018-04-16 16:36:36
1.2K0
发布2018-04-16 16:36:36
举报
文章被收录于专栏:Python小屋Python小屋

(1) 内置的整数、实数与复数

在使用中,不必担心数值的大小问题,Python支持任意大的数字,具体可以大到什么程度仅受内存大小的限制。由于精度的问题,对于实数运算可能会有一定的误差,应尽量避免在实数之间直接进行相等性测试,而是应该以二者之差的绝对值是否足够小作为两个实数是否相等的依据。在数字的算术运算表达式求值时会进行隐式的类型转换,如果存在复数则都变成复数,如果没有复数但是有实数就都变成实数,如果都是整数则不进行类型转换。

>>> 9999 ** 99 #这里**是幂乘运算符,等价于内置函数pow()

990148353526723487602263124753282625570559528895791057324326529121794837894053513464422176826916433932586924386677766244032001623756821400432975051208820204980098735552703841362304669970510691243800218202840374329378800694920309791954185117798434329591212159106298699938669908067573374724331208942425544893910910073205049031656789220889560732962926226305865706593594917896276756396848514900989999

>>> 0.3 + 0.2 #实数相加

0.5

>>> 0.4 - 0.1 #实数相减,结果稍微有点偏差

0.30000000000000004

>>> 0.4 - 0.1 == 0.3 #应尽量避免直接比较两个实数是否相等

False

>>> abs(0.4-0.1 - 0.3) < 1e-6 #这里1e-6表示10的-6次方

True

Python内置支持复数类型及其运算,并且形式与数学上的复数完全一致。例如:

>>> x = 3 + 4j #使用j或J表示复数虚部

>>> y = 5 + 6j

>>> x + y #支持复数之间的加、减、乘、除以及幂乘等运算

(8+10j)

>>> x * y

(-9+38j)

>>> abs(x) #内置函数abs()可用来计算复数的模

5.0

>>> x.imag #虚部

4.0

>>> x.real #实部

3.0

>>> x.conjugate() #共轭复数

(3-4j)

Python 3.6.x开始支持在数字中间位置使用单个下划线作为分隔来提高数字的可读性,类似于数学上使用逗号作为千位分隔符。在Python数字中单个下划线可以出现在中间任意位置,但不能出现开头和结尾位置,也不能使用多个连续的下划线。

>>> 1_000_000

1000000

>>> 1_2_3_4

1234

>>> 1_2 + 3_4j

(12+34j)

>>> 1_2.3_45

12.345

(2)分数

Python标准库fractions中的Fraction对象支持分数运算,还提供了用于计算最大公约数的gcd()函数和高精度实数Decimal,这里重点介绍Fraction对象。

>>> from fractions import Fraction

>>> x = Fraction(3, 5) #创建分数对象

>>> y = Fraction(3, 7)

>>> x

Fraction(3, 5)

>>> x ** 2 #幂运算

Fraction(9, 25)

>>> x.numerator #查看分子

3

>>> x.denominator #查看分母

5

>>> x + y #分数之间的四则运算,自动进行通分

Fraction(36, 35)

>>> x * y

Fraction(9, 35)

>>> x / y

Fraction(7, 5)

>>> x - y

Fraction(6, 35)

>>> x * 2 #分数与数字之间的运算

Fraction(6, 5)

>>> Fraction(3.5) #把实数转换为分数

Fraction(7, 2)

(3)高精度实数

标准库fractions和decimal中提供的Decimal类实现了更高精度的运算。

>>> from fractions import Decimal

>>> 1 / 9 #内置的实数类型

0.1111111111111111

>>> Decimal(1/9) #高精度实数

Decimal('0.111111111111111104943205418749130330979824066162109375')

>>> 1 / 3

0.3333333333333333

>>> Decimal(1/3)

Decimal('0.333333333333333314829616256247390992939472198486328125')

>>> Decimal(1/9) + Decimal(1/3)

Decimal('0.4444444444444444197728216750')

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档