数字类型 Number
数字类型 Number (int float bool complex)
int 整型
又分为:正整型、 0 、负整型 三种,但是不会有表示上的区别
在python2中跟整数相关的数据类型有两种:int(整型)、long(长整型),他们都是整数只不过能表示的值范围不同。
int,可表示的范围:-9223372036854775808~9223372036854775807
long,整数值超出int范围之后自动会转换为long类型(无限制)。
在python3中去除了long只剩下:int(整型),并且 int 长度不在限制。
intvar = 100
print(intvar)
# type 获取值得类型
res = type(intvar)
print(res)
# id 获取值得地址
res = id(intvar)
print(res)
输出结果:
100
<class 'int'>
140710405608208
二进制整型
intvar = 0b110
print(intvar)
print(type(intvar))
print(id(intvar))
输出内容:
6
<class 'int'>
140710405605200
八进制整型
intvar = 0o127
print(intvar)
print(type(intvar))
print(id(intvar))
输出内容:
87
<class 'int'>
140710405607792
十六进制
intvar = 0xff
intvar = 0XFF
print(intvar)
print(type(intvar))
print(id(intvar))
输出内容:
255
<class 'int'>
140710405613168
float 浮点型(小数)
表达方式1
floatvar = 3.6
print(floatvar)
print(type(floatvar))
输出结果:
3.6
<class 'float'>
表达方式2 科学计数法
# 小数点右移5
floatvar1 = 5.7e5
# 小数点左移2
floatvar2 = 5.7e-2
print(floatvar1)
print(type(floatvar1))
print(floatvar2)
print(type(floatvar2))
输出结果:
570000.0
<class 'float'>
0.057
<class 'float'>
complex 复数类型
3 + 4j
实数+虚数
实数: 3
虚数: 4j
j : 如果有一个数他的平方等于-1,那么这个数就是j , 科学家认为有,表达一个高精度的类型
表达方式1
complexvar = 3 + 4j
complexvar = -3j
print(complexvar)
print(type(complexvar))
输出结果:
(-0-3j)
<class 'complex'>
表达方法2
complex(实数,虚数) => 复数
res = complex(3,4)
print(res)
print(type(res))
输出结果:
(3+4j)
<class 'complex'>
bool 布尔类型
只有两种值:True 真的, False 假的
boolvar = True
boolvar = False
print(boolvar)
print(type(boolvar))
输出结果:
False
<class 'bool'>
Number 类型的强制转换 (int、float、complex、bool)
int 强制把数据变成整型
int、float、bool、纯数字字符串
var2 = 5.67
var3 = True
var4 = "123456"
var5 = "123abc"
var6 = 3+5j
res1 = int(var2)
res2 = int(var3) # True => 1
res3 = int(False) # False => 0
res4 = int(var4)
# res = int(var5) # error
# res = int(var6) # error
print(res1 , type(res1))
print(res2 , type(res2))
print(res3 , type(res3))
print(res4 , type(res4))
输出结果:
5 <class 'int'>
1 <class 'int'>
0 <class 'int'>
123456 <class 'int'>
float 强制把数据变成小数
int、float、bool、纯数字字符串
var1 = 13
var3 = True
var4 = "123456"
res1 = float(var1)
res2 = float(var3) # True => 1.0
res3 = float(False)# False => 0.0
res4 = float(var4) # 123456.0
print(res1 , type(res1))
print(res2 , type(res2))
print(res3 , type(res3))
print(res4 , type(res4))
输出结果:
13.0 <class 'float'>
1.0 <class 'float'>
0.0 <class 'float'>
123456.0 <class 'float'>
complex 强制把数据变成复数
int、float、bool、纯数字字符串、complex
var1 = 13
var2 = 5.67
var3 = True
var4 = "123456"
res1 = complex(var1) # 添加0j 表达复数
res2 = complex(var2)
res3 = complex(var3) # True => 1+0j
res4 = complex(False) # False => 0j
res5 = complex(var4) # 123456+0j
print(res1 , type(res1))
print(res2 , type(res2))
print(res3 , type(res3))
print(res4 , type(res4))
print(res5 , type(res5))
输出结果:
(13+0j) <class 'complex'>
(5.67+0j) <class 'complex'>
(1+0j) <class 'complex'>
0j <class 'complex'>
(123456+0j) <class 'complex'>
bool 强制把数据变成布尔型
布尔型可以强转一切数据类型
0 、 0.0 、 False、 0j 、''、 []、 () 、set()、 {} 、None 这十种情况都是假的,其他对应的情况都是真的
res = bool(None)
print(res , type(res))
输出结果:
False <class 'bool'>
初始化变量时,不清楚用什么值,无脑写上None
None 代表空的,代表什么也没有,一般用于初始化变量
a = None
b = None
默认转换成当前数据类型的一个值
int()、float()、complex()、bool()
res = bool()
print(res , type(res))
输出结果:
False <class 'bool'>
Number 自动类型转换 (int、float、complex、bool)
低精度默认向高精度进行转换 :bool -> int -> float -> complex
bool + int
res = True + 100
print(res ,type(res))
输出结果:
101 <class 'int'>
bool + float
res = True + 344.565
print(res ,type(res))
输出结果:
345.565 <class 'float'>
bool + complex
res = True + 7 - 90j
print(res ,type(res))
输出结果:
(8-90j) <class 'complex'>
int + float
res1 = 5 + 7.88
res2 = 5.0 + 7.88
print(res1 ,type(res1))
print(res2 ,type(res2))
输出结果:
12.879999999999999 <class 'float'>
12.879999999999999 <class 'float'>
int + complex
res1 = 5 + 6 + 8j
res2 = 5 + 0j
res3 = 6 + 8j
print(res1 ,type(res1))
print(res2 ,type(res2))
print(res3 ,type(res3))
输出结果:
(11+8j) <class 'complex'>
(5+0j) <class 'complex'>
(6+8j) <class 'complex'>
float + complex
res1 = 5.66 + 9.1 -90j
res2 = 5.66 + 0j + 9.1 -90j
print(res1 ,type(res1))
print(res2 ,type(res2))
输出结果:
(14.76-90j) <class 'complex'>
(14.76-90j) <class 'complex'>
小数的精度损耗
小数后面一般有时截取15~18位,但是不完全,存在精度损耗
不要用小数作比较,因为会不准
print(0.1 + 0.2 == 0.3)
print(5.1 + 5.9 == 11.0)
print(0.1 + 0.2)
print(5.1 + 5.9)
输出结果:
False
True
0.30000000000000004
11.0
浙公网安备 33010602011771号