首页Python【Python基础】4.数...

【Python基础】4.数字类型


本系列文章配套代码获取有以下三种途径:

  • 可以在以下网站查看,该网站是使用JupyterLite搭建的web端Jupyter环境,因此无需在本地安装运行环境即可使用,首次运行浏览器需要下载一些配置文件(大约20M):

https://returu.github.io/Python_Basic/lab/index.html
链接:https://pan.baidu.com/s/1x2Ynh_VibPY2u-HWTaJo8w?pwd=mnsj 提取码:mnsj
  • 前往GitHub详情页面,单击 code 按钮,选择Download ZIP选项:
https://github.com/returu/Python_Basic

—————————————————–

Python语言提供了3中数字类型:整数、浮点数和复数,分别对应数学中的整数、实数和复数。

另外还有一种特殊的数字类型:布尔值(其有效值只有Ture和False)。

1.整数类型:

整数类型共有4种进制表示:二进制、八进制、十进制和十六进制。

默认情况下采用十进制表示,其他进制需要使用引导符号来表示,输出时解释器会按照十进制输出。

进制名称
引导符号
描述
十进制
——
默认情况
二进制
0b/0B 有字符0和1组成
八进制
0o/0O 有字符0~7组成
十六进制
0x/0X 有字符0~9、a~f、A~F组成

1# 二进制
2>>> 0b110
36
4# 八进制
5>>> 0o157
6111
7# 十六进制
8>>0x19aF
96575

也可以采用内置函数,将整数转换成任意进制形式的字符串。

 1# 将整数转换成二进制形式的字符串
2>>> bin(6)
3'0b110'
4
5# 将整数转换成八进制形式的字符串
6>>> oct(111)
7'0o157'
8
9# 将整数转换成十六进制形式的字符串
10>>> hex(6575)
11'0x19af'

除极大数的运算外,整数类型是没有取值范围限制的。

1# 计算3的300次方
2>>> pow(3,300)
3136891479058588375991326027382088315966463695625337436471480190078368997177499076593800206155688941388250484440597994042813512732765695774566001

2.浮点数类型:

浮点数类型表示带有小数点的数字。

浮点数的包括十进制表示(1.23)和科学计数法(1e-3)表示两种表示方式。

需要注意的是,浮点数类型和整数类型是由计算机不同的硬件单元执行的,因此两者处理方法不同。

例如,尽管浮点数0.0与整数0值相同,但是两者在计算机内部的表示是不同的。

1# 计算浮点数0.0是否等于整数0
2>>0 == 0.0
3True

浮点数的数值范围和精度等信息受所处计算机系统限制,可以通过sys模块下的float_info函数得到。

1# 获取python解释器所运行系统的关于浮点数的各种参数
2>>> import sys
3>>> sys.float_info
4sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)

根据输出结果可以看到计算机只能提供15个数字(dig=15)的准确性,最后一位是由计算机根据二进制计算结果来确定。

1# 计算机只能提供15个数字(dig=15)的准确性
2>>3.1415926123654789
33.141592612365479
4>>314159261236547.89
5314159261236547.9

因此,使用浮点数无法进行极高精度的数学运算。不过由于python支持无限制且准确的整数运算,因此使用整数表达浮点数的方法是提高运算精度的基本方法之一。

1# 使用整数表达浮点数的方法是提高运算精度的基本方法之一
2>>3.1415926123654789 * 3.1415926123654789
39.869604142069354
4>>31415926123654789 * 31415926123654789
5986960414206935416829734842634521

另外,Python中的decimal库提供了更精确的数字类型Decimal,该类型利用了上述使用整数表达浮点数的方法计算高精度浮点数运算。

需要注意的是使用decimal库时,Decimal(‘数字’)是高精度数字的基本表示形式,需要使用单引号。

 1# Python中的decimal库提供了更精确的数字类型Decimal
2>>> import decimal
3>>> a = decimal.Decimal('3.1415926123654789') # 需要使用单引号
4>>> b = decimal.Decimal('3.1415926123654789')
5>>> a * b
6Decimal('9.869604142069354366091116584')
7# 可以使用getcontext().prec参数自定义浮点数精度
8>>> decimal.getcontext().prec = 20
9>>> a * b
10Decimal('9.8696041420693543661')

3.复数类型:

复数类型中的实数部分和虚数部分的数值都是浮点数类型。

对于复数z,可以使用.real.imag分别获得复数的实数部分和虚数部分。

1# 获取复数的实数部分和虚数部分
2>>> z = 1.23 + 3.45j
3>>> z.real
41.23
5>>> z.imag
63.45

4.数字中的下划线:

当书写很大的数字时,可以使用下划线作为数位分隔符,将其中的数字分组,使其清晰易读,而Python在打印该数字时会忽略其中的下划线。

该方法适用于整数和浮点数,但要求Python版本在3.6及以上。

1# 数字中的下划线
2>>> large_number = 21_000_000_000
3>>> large_number
421000000000

实际上把下划线放在第一数位后面的任何位置都可以。

1# 下划线可以放在第一数位之后的任意位置
2>>> num = 1_2_3
3>>> num
4123

5.布尔值:

在Python中,布尔值的有效值只有True和False。

函数bool()能将任意的数据类型转换为布尔值。

非零的数被视为True,值为0的数被视为False。

 1# 非零的数被视为True
2>>> bool(True)
3True
4>>> bool(1)
5True
6>>> bool(100)
7True
8>>> bool(-99)
9True
10# 值为0的数被视为False
11>>> bool(False)
12False
13>>> bool(0)
14False
15>>> bool(0.0)
16False

本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments