数字类型 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

 

posted @ 2022-10-22 23:18  屠魔的少年  阅读(5)  评论(0)    收藏  举报