python数值类型

数值类型

一、 数据类型

在现实中,我们会根据事物的不同表现,进而可以进行相应的分类。例如,当我们去超市购物时,超市会根据商品的不同特征分类:食品类,日常用品类,家用电器类……在我们学数学时,也可以对数值进行分类:整数,小数,分数,复数……。同样,在Python中,我们也可以根据数据的不同特征,对数值进行不同的分类。

1.1 数据得类型

在Python中,数据可以分为如下类型:

数值类型

  • 整数类型(int)
  • 浮点类型(float)
  • 复数类型(complex)

布尔类型(bool)

序列类型

  • 列表(list)
  • 元组(tuple)
  • 字符串(str)
  • 字节(bytes)

映射类型(dict)

集合类型(set)

其他内置类型
本章中,我们只讨论数值类型与布尔类型,其他类型,我们会在后续章节中进行详细说明。

鸭子类型
在Python中,严格来说,变量是不具有类型的,变量的类型完全取决于其所关联的对象类型,这与其他语言的差别较大(C,Java等)。因此,我们常习惯的成Python的类型为“鸭子类型”,这是一种动态类型的体现。

说明:

由于变量必须要关联一个具体的对象,才能确定变量的类型。因此,在定义变量时,不能只给出变量的名字,必须要同时也给出变量所关联的对象。
Python2中还支持长整数类型(long),在Python3中取消。

1.2 整数类型

整数类型(int)是最常使用的类型。我们数学上使用的整数,例如,3,-50等,这些都是整数类型。

四种进制表示

整数类型支持四种进制表示:

  • 二进制(使用0b或0B前缀)
  • 八进制(使用0o或0O前缀)
  • 十进制(无前缀)
  • 十六进制(使用0x或0X前缀,10 ~ 15使用a ~ f或A ~ F表示)

进制转换

我们可以调用相应的函数,来对四种进制之间进行转换。

  • bin其他进制转换为二进制
  • oct其他进制转换为八进制
  • int其他进制转换为十进制
  • hex其他进制转换为十六进制

1.3 布尔类型(真假判断)

布尔类型(bool)表示的是一种条件的判断,具有两个值:True与False。其中,True表示条件成立,即为“真”,而False表示条件不成立,即为“假”。

布尔类型是整数类型的子类型。实际上,True就是1,False就是0。因而,我们也可以使用布尔类型参与数学上的运算,与使用1与0参与运算的结果是一样的。

1.4 浮点类型

浮点类型(float)就是数学上的小数类型。例如:1.0,-2.5等,都是浮点类型。在进制表示上,浮点类型仅支持十进制表示(这点不同于整数类型)。除了常规的表示方式外,浮点类型也可以使用数学上科学计数法的形式表示,例如:

1.5e30

说明:

  • 十进制的整数类型不能使用0开头,但是,浮点类型可以以0开头。

浮点类型的特殊值

浮点类型具有两个特殊值:NaN(Not A Number)与Infinity(无穷大),其中无穷大又可分为正无穷(+Infinity)与负无穷(-Infinity)。我们可以通过float函数来获得这些值。

NaN有一个特征,就是自己不等于自己,因此,我们不能通过==来判断一个数值是不是NaN。

浮点类型的不精确性

在使用浮点类型时,我们需要留意,浮点类型在计算机中仅是近似的存储,浮点类型是不精确的。因此,我们要避免进行如下的操作:

  • 避免数量级相差很大的浮点值之间进行运算。
  • 避免进行等量的比较。

练习浮点类型的计算,自行找出还有哪些计算体现出不精确性。
Decimal的使用

考虑到浮点类型的不精确性,因此,如果我们需要进行精确计算时,我们可以使用decimal模块中的Decimal类来实现,该类提供精确的浮点计算。

此外,我们也可以指定Decimal的计算精度,即计算结果最多保留的有效数字位数,默认为28位有效数字。

1.5 复数类型

Python中的复数类型(complex)类似于数学上的复数。含有虚部(使用j或J后缀)的数值为复数类型。例如:3 + 5j,-2 - 3j(数学中虚部后缀为i)。复数分为实部与虚部两个部分,我们可以通过real与imag属性分别获取复数的实部与虚部的值。

1.6 类型转换

获取数据类型
我们可以通过type函数获取变量的类型,准确的讲,应该是变量所关联的对象的类型。

使用int,float与complex进行混合运算,确定结果的类型,总结。

类型转换函数
我们可以在不同的类型之间进行类型转换,Python中为我们提供了如下的转换函数:

  • int(value)
    将数值类型或字符串转换为整数(int)类型。如果没有参数,返回0。

  • float(value)
    将数值类型或字符串转换为浮点(float)类型。如果没有参数,返回0.0。

  • complex(real, imag)
    根据实部与虚部(可选)创建一个复数。如果没有参数,返回0j。

  • bool(value)
    参数为真值时,返回True,否则返回False。

4种类型之间的转换

说明:

尽管可以使用转换函数进行类型转换,但并非任意两个类型之间都是能够进行转换的。例如,复数类型就不能够通过int或float转换为整数或浮点类型。

此外,int函数还可以提供第二个参数,指定解析转换时,使用的进制。此时,第一个参数需要是字符串类型(或字节等类型),不能是数值类型。例如:

int(“300”, 16)

则会根据16进制来解析300,最终函数返回的结果为768,而不是300。如果没有指定第二个参数,则默认为十进制。

级别:复数类型> 浮点类型> 整型 > 布尔类型

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值