实际开发中,我们经常需要使用数字记录游戏中用户的得分、游戏中角色的生命值、伤害值等信息,Python 语言提供了数值类型用于保存这些数值。

需要注意的是,Python 中这些数值类型都是不可改变的,也就是说,如果我们要修改数字类型变量的值,那么其底层实现的过程是,先将新值存放到内存中,然后修改变量让其指向新的内存地址,换句话说,Python 中修改数值类型变量的值,其实只是修改变量名所表示的内存空间。

数值类型只是一个泛泛的统称,Python 中的数值类型主要包括整形、浮点型和复数类型。

Python整型

整形专门用来表示整数,即没有小数部分的数。在 Python 中,整数包括正整数、0 和负整数。

和其他强类型语言不同,它们会提供多种整形类型,开发者要根据数值的大小,分别用不同的整形类型存储,以 C 语言为例,根据数值的大小,开发者要合理选择 short、int、long 整形类型存储,大大增加了开发难度。

Python 则不同,它的整型支持存储各种整数值,无论多大或者多小,Python 都能轻松处理(当所用数值超过计算机自身的计算功能时,Python 会自动转用高精度计算)。

例如如下代码:

  1. #定义变量a,赋值为56
  2. a = 56
  3. print(a)
  4. #为a赋值一个大整数
  5. a = 9999999999999999999999
  6. print(a)
  7. #type()函数用于返回变量的类型
  8. print(type (a))

对于没有编程基础的读者, 同样可以在交互式解释器中逐行“试验”上面程序来观看运行效果。由于篇幅限制,本教程后面的程序不再详细列出在交互式解释器中逐行“试验”的过程。

上面程序中,将 9999999999999999999999 大整数赋值给变量 a,Python 也不会发生溢出等问题,程序运行一样正常,这足以证明 Python 的强大。

使用 Python 3.x 运行上面程序,可以看到如下输出结果:

56
9999999999999999999999
<class 'int'>

从上面的输出结果可以看出,此时 a 依然是 int 类型。

但如果用 Python 2.x 运行上面程序,由于输入的数值比较大,Python 会自动在其后面加上字母 L(或小写字母 l),如下输出结果:

56
9999999999999999999999L
<type 'long'>

对比两种输出结果,不难发现:不管是 Python 3.x 还是 Python 2.x,Python 完全可以正常处理很大的整数,只是 Python 2.x 底层会将大整数当成 long 类型处理,但开发者通常不需要理会这种细节。

除此之外,Python 的整型还支持 None 值(空值),例如如下代码:

a = None
print(a) #什么都不输出

Python 的整型数值有 4 种表示形式:

  1. 十进制形式:最普通的整数就是十进制形式的整数,在使用十进制表示整数值时,不能以 0(零)作为十进制数的开头(数值是 0 除外)。
  2. 二进制形式:由 0 和 1 组成,以 0b 或 0B 开头。例如,101 对应十进制数是 5;
  3. 八进制形式:八进制整数由 0~7 组成,以 0o 或 0O 开头(第一个字母是零,第二个字母是大写或小写的 O)。需要注意的是,在 Python 2.x 中,八进制数值还可以直接以 0(零)开头。
  4. 十六进制形式:由 0~9 以及 A~F(或 a~f)组成,以 0x 或 0X 开头,

下面代码片段使用了其他进制形式的数:

  1. #以0x或0X开头的整型数值是十六进制形式的整数
  2. hex_value1 = 0x13
  3. hex_value2 = 0xaF
  4. print("hexValue1 的值为:",hex_value1)
  5. print("hexValue2 的值为:",hex_value2)
  6. #以0b或0B开头的整型数值是二进制形式的整数
  7. bin_val = 0b111
  8. print('bin_val的值为:',bin_val)
  9. bin_val = 0B101
  10. print('bin_val的值为:',bin_val)
  11. #以0o或0O开头的整型数值是八进制形式的整数
  12. oct_val = 0o54
  13. print('oct_val 的值为:',oct_val)
  14. oct_val = 0O17
  15. print('oct_val 的值为:',oct_val)

为了提高数值(包括浮点型)的可读性,Python 3.x 允许为数值(包括浮点型)增加下画线作为分隔符。这些下画线并不会影响数值本身。例如如下代码:

  1. #在数值中使用下画线
  2. one_million = 1000000
  3. print(one_million)
  4. price = 234_234_234 #price 实际的值为234234234
  5. android = 1234_1234 #android 实际的值为12341234

Python浮点型

浮点型数值用于保存带小数点的数值,Python 的浮点数有两种表示形式:

  • 十进制形式:这种形式就是平常简单的浮点数,例如 5.12、512.0、0.512。浮点数必须包含一个小数点,否则会被当成整数类型处理。
  • 科学计数形式:例如 5.12e2(即 5.12×102)、5.12E2(也是 5.12 ×102)。

必须指出的是,只有浮点型数值才可以使用科学计数形式表示。例如 51200 是一个整型值,但 512E2 则是浮点型值。

下面程序示范了上面介绍的关于浮点数的各个知识点:

  1. af1 = 5.2345556
  2. #输出af1的值
  3. print("af1的值为:",af1)
  4. af2 = 25.2345
  5. print("af2的类型为:",type(af2))
  6. f1=5.12e2
  7. print("f1的值为:",f1)
  8. f2 = 5e3
  9. print("f2的值为:",f2)
  10. print("f2的类型为:",type(f2))#看到类型为float

通过第 8 行代码可以看出,虽然 5e3 的值是 5000,但它依然是浮点型值,而不是整型值,因为 Python 会自动将该数值变为 5000.0。

注意,使用浮点数进行计算时,可能会出现小数位数不确定的情况,比如说,计算 0.1+0.2,本来应该得到 0.3,但经过测试你会发现,Python解释器的运行结果为 0.30000000000000004。几乎所有编程语言都存在这个问题,这与浮点数在底层的存储方式有关系(后续章节会做详细介绍)。

Python复数

Python 甚至可以支持复数,复数的虚部用 j 或 J 来表示。

如果读者对虚数虚部感到困惑,请直接跳过本节,大部分编程并不会用到复数这么“高级”的数学知识。

如果需要在程序中对复数进行计算,可导入 Python 的 cmath 模块(c 代表 complex),在该模块下包含了各种支持复数运算的函数。

模块就是一个 Python 程序,Python 正是通过模块提高了自身的可扩展性的;Python 本身内置了大量模块,此外还有大量第三方模块,导入这些模块即可直接使用这些程序中定义的函数。

下面程序示范了复数的用法:

  1. ac1 = 3 + 0.2j
  2. print (ac1)
  3. print(type(ac1)) #输出复数类型
  4. ac2 = 4 - 0.1j
  5. print(ac2)
  6. #复数运行
  7. print(ac1 + ac2) #输出(7+0.1j)
  8. #导入cmath 模块
  9. import cmath
  10. #sqrt()是cmath 模块下的商数,用于计算平方根
  11. ac3 = cmath.sqrt(-1)
  12. print (ac3) #输出1j

12.Python数值类型(整形、浮点型和复数)及其用法的更多相关文章

  1. Python数值类型

    数值类型 python的数值类型包括常规的类型:整数(没有小数部分的数字).浮点数(通俗地说,就是有小数部分的数字)以及其它数值类型(复数.分数.有理数.无理数.集合.进制数等).除了十进制整数,还有 ...

  2. Python 数值类型

    1.数值类型分为整形(二进制(0b),八进制(0o),十进制,十六进制(0x) ),浮点型,long,complex(复合行) 当我们说十进制数的时候,是逢10进1,就是说到达10的时候就要向前一位进 ...

  3. python数值类型与序列类型

    基本运算符 / 浮点除法 //整除 x**y  x的y次方 python中严格区分大小写 type(xx)/内置函数,查看变量xx的类型 id(xx)/内置函数,查看变量xx的内存地址 //----- ...

  4. Python数值类型和序列类型

    int.float.bool这三个数值类型和常用序列类型的定义和使用 数值类型的基本计算 序列类型的索引取值.切片.成员运算等序列类型的通用操作 complex(复数).decimal(定点数).ma ...

  5. SQL Server的小数数值类型(float 和 decimal)用法

    在SQL Server中,小数数值实际上只有两种数据类型:float 和 decimal.double precision 整体是数据类型,等价于 float(53),real等价于float(24) ...

  6. Python黑帽编程2.2 数值类型

    Python黑帽编程2.2  数值类型 数值类型,说白了就是处理各种各样的数字,Python中的数值类型包括整型.长整型.布尔.双精度浮点.十进制浮点和复数,这些类型在很多方面与传统的C类型有很大的区 ...

  7. Python数值

    一.python数值类型 python数值类型有以下四种: int(整数) float(浮点数) complex(复数) bool(布尔型) 注意:python3取消了long型.  二.python ...

  8. Python变量类型(l整型,长整形,浮点型,复数,列表,元组,字典)学习

    #coding=utf-8 __author__ = 'Administrator' #Python变量类型 #Python数字,python支持四种不同的数据类型 int整型 long长整型 flo ...

  9. Python中的数值类型总结

    本文参考书:<Learning Python>中文版--<Python 学习手册>第四版 Python中包含大量的数值类型,他们中的大部分与其他编程语言保持一致,因此学习他们就 ...

随机推荐

  1. python正则表达式的介绍

    re模块的使用 re.match从头匹配一个符合规则的字符串,从起始位置开始匹配,匹配成功返回一个对象,未匹配成功返回None. import re # re.match(正则表达式,要匹配的字符串) ...

  2. pip 更新命令

    更新pip的命令  https://pip.pypa.io/

  3. php运行结果设置无缓存

    修改配置php.ini vim /usr/local/php/lib/php.ini opcache.enable= 重启php服务 service php-fpm restart done! 参考地 ...

  4. 入门&常量&变量

    位:二进制中,每个0或1就是一个位,叫做bit(比特) 字节:计算机最小是存储单元(byte或B) 8bit = 1B 常用cmd命令: 启动: Win+R,输入cmd回车切换盘符 盘符名称:进入文件 ...

  5. 富文本编辑器--使用textarea即时更新文本域同步编辑器内容

    使用 textarea wangEditor 从v3版本开始不支持 textarea ,但是可以通过onchange来实现 textarea 中提交富文本内容. <div id="di ...

  6. 4.pca与梯度上升法

    (一)什么是pca pca,也就是主成分分析法(principal component analysis),主要是用来对数据集进行降维处理.举个最简单的例子,我要根据姓名.年龄.头发的长度.身高.体重 ...

  7. 表单的 submit 和 onsubmit 的用法 与区别

    submit与onsubmit 发生顺序:onsubmit -> submit 1.阻止表单提单: <script>function submitFun(){    //逻辑判断   ...

  8. javascript模板字符串(标签函数)

    前面介绍了javascript的模板字符串的基本知识,今天深入学习一下标签函数 模板字符串概述 这里先简单说一下模板字符串的概念 1.模板字符串,从名字上可以得出其实返回的是字符串,普通使用其实就想引 ...

  9. .htaccess防盗链方法(文件、图片)

    http标准协议中有专门的字段记录referer,一来可以追溯上一个入站地址是什么,二来对于资源文件,可以跟踪到包含显示他的网页地址是什么. 因此所有防盗链方法都是基于这个Referer字段两种方法: ...

  10. windows调试之命令行窗口问题

    CProProcess::InitProProcess(_T("safeProcessDemo")); cout << "Enter 'q' to exit: ...