第 3 章 数值类型
3.1数值类型
简介
每个对象都有类型,这里先介绍数值类型,数值类型是不可变的,后面再介绍字符串、列表、元组、字典、集合。
Python 中最基本的内置数值数据类型:
1. 整型:整数。
例:2345、10、50
2. 浮点型:小数。
3.14(或者科学计数法314e-2)
3. 布尔型:表示真假。
例:True(逻辑值为1)、False(逻辑值为0)
整数详解
Python 中,除 10 进制,还有其他三种进制:
0b 或 0B,二进制 0 1
0o 或 0O,八进制 0 1 2 3 4 5 6 7
0x 或 0X,十六进制 0 1 2 3 4 5 6 7 8 9 a b c d e f
这三种进制可以非常方便的进行“位运算”操作。位运算知识后续将会介绍。
整数可以有多大?
Python2 中,int 是 32 位,可以存储从-2147483648 到 2147483647 的整数(约± 21 亿)。Long 类型是 64 位,可以存储: -2^63--2^63-1 之间的数值。
Python3 中,int 可以存储任意大小的整数,long 被取消。我们甚至可以存储下面的
值:googol = 10**100。Python3 中可以做超大数的计算,而不会造成“整数溢出”,这也是 Python 特别适 合科学运算的特点。
浮点数详解
浮点数,又称为 float。
浮点数用 a b10 形式的科学计数法表示。比如:3.14,表示成:314E-2 或者 314e-2。
这些数字在内存中也是按照科学计数法存储。
布尔值详解
Python2 中没有布尔值,直接用数字 0 表示 False,用数字 1 表示 True。
Python3 中,把 True 和 False 定义成了关键字,但他们的本质还是 1 和 0,甚至可以和数
字相加。
例:
a=True
b=3
print(a+b)
执行后:
4
时间的表示
计算机中时间的表示是从“1970 年 1 月 1 日 00:00:00”开始,以毫秒(1/1000 秒) 进行计算。我们也把 1970 年这个时刻成为“unix 时间点”。
这样,我们就把时间全部用数字来表示了。
Python 中可以通过 time.time() 获得当前时刻,返回的值是以秒为单位,带微秒(1/1000 毫秒)精度的浮点值,例如:1530167364.8566。
例:
import time
b=int(time.time())
print(b)
totalMinutes = b/60 # 浮点数除法运算符,结果是一个浮点数
print(totalMinutes)
totalMinutes = b//60 # 整数除法运算符,结果是一个被向下取整的整数
print(totalMinutes)
totalHours = totalMinutes//60
print(totalHours)
totalDays = totalHours//24
print(totalDays)
totalYears = totalDays//365
print(totalYears)
执行后:
1530168754
25502812.566666666
25502812
425046
17710
48
3.2数据类型转换和四舍五入
1.使用int()实现类型转换:浮点数直接舍去小数部分;布尔值 True 转为 1,False 转为 0;字符串符合整数格式(浮点数格式不行)则直接转成对应整数,否则报错。
2.整数和浮点数混合运算时,表达式结果自动转型成浮点数,比如:2+8.0 的结果是 10.0。
3.round(value)可以返回四舍五入的值,但不会改变原有值,而是产生新的值。
函 数 | 作 用 | |
int(x) | 将x转换成整数类型 | |
float(x) | 将x转换成浮点数类型 | |
complex(real [,imag]) | 创建一个复数 | |
str(x) | 将x转换为字符串 | |
repr(x) | 将x转换为表达式字符串 | |
eval(str) | 计算在字符串中的有效Python表达式,并返回一个对象 | |
chr(x) | 将整数x转换为一个字符 | |
ord(x) | 将一个字符x转换为它对应的整数值 | |
hex(x) | 将一个整数x转换为一个十六进制字符串 | |
oct(x) | 将一个整数x转换为一个八进制的字符串 | |
3.3数值类型的格式化
浮点数通过 f,整数通过 d 进行格式化。
1. 使用百分号 % 的旧式格式化
这是C语言风格的格式化,虽然在Python中仍然可用,但在现代的Python代码中并不推荐使用,因为它已经被更新的方法所取代。
例:
number = 1234567.8910
print("%0.2f" % number) # %0.2f 表示输出一个浮点数,保留两位小数,也可以%.2f
执行后:
1234567.89
2. 使用 str.format() 方法
str.format() 是一种更现代的格式化字符串的方式,它提供了更多的灵活性和功能。
例:
number = 1234567.8910
print("{:.2f}".format(number))
执行后:
1234567.89
3. 使用 f-string
从 Python 3.6 开始,f-string 成为了最简洁和直观的字符串格式化方式。
例:
number = 1234567.8910
print(f"{number:.2f}")
执行后:
1234567.89
3.4数值类型的填充和对齐
使用百分号 % 的旧式格式化、使用 str.format() 方法和使用 f-string,都可以指定填充和对齐方式。每种方法都有其适用场景,但通常推荐使用 f-string,因为它更简洁、易读并且功能强大。
“^ < >”表示对齐方式:居中、左对齐、右对齐,后面带宽度
“:”表示填充,后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
例:
number = 1234567.8910
# 左对齐,最小宽度为15,不足部分用空格填充,保留两位小数
print("{:<15.2f}".format(number))
# 居中对齐,最小宽度为15,不足部分用*填充,保留两位小数
print("{:*^15.2f}".format(number))
# 右对齐,最小宽度为15,不足部分用空格填充,保留两位小数
print(f"{number:>15.2f}")
执行后:
1234567.89
**1234567.89***
1234567.89