Python基础:02数字
1:Python标准整数类型等价于C的(有符号)长整型。整数一般以十进制表示,但是Python也支持八进制或十六进制来表示整数。八进制整数以数字“0”开始, 十六进制整数则以“0x”或“0X”开始。
2:Python中的长整型和C或其它编译型语言的长整数不同。那些语言的长整数典型的取值范围是32位或64位。而Python的长整数类型能表达的数值仅仅与机器支持的(虚拟)内存大小有关。所以,Python能轻松表达很大很大的整数。
普通用户会几乎感觉不到长整型的存在。必要时整型会悄悄自动转换为长整型。
3:Python 中的浮点数类似C语言中的double类型。
4:Python支持不同的数字类型相加,Python使用数字类型强制转换的方法来解决数字类型不一致的问题。
当两个操作数类型不一致时, Python会检查一个操作数是否可以转换为另一类型的操作数。如果可以,转换它并返回转换结果。某些转换是不可能的,比如果将一个复数转换为非复数类型,将一个浮点数转换为整数等等,因此转换过程必须遵守几个规则。
要将一个整数转换为浮点数,只要在整数后面加个 .0 就可以了。 要将一个非复数转换为复数,则只需要要加上一个 “0j”的虚数部分。这些类型转换的基本原则是: 整数转换为浮点数, 非复数转换为复数。具体描述如下:
如果有一个操作数是复数, 另一个操作数被转换为复数。
否则,如果有一个操作数是浮点数, 另一个操作数被转换为浮点数。
否则,如果有一个操作数是长整数,则另一个操作数被转换为长整数;
否则,两者必然都是普通整数,无须类型转换。
5:在Python中,对整数操作数,采用传统除法,舍去小数部分(地板除),返回一个整数,如果操作数之一是浮点数,则执行真正的除法。比如:
>>> 1 / 2 # perform integerresult (floor) # 地板除
0 >>> 1.0 / 2.0 # returns actual quotient#真正除法
0.5
在未来版本的Python中,除法运算的标准行为是真正的除法,返回真实的商,而不管操作数是整数还是浮点数。现阶段通过执行from__future__ import division 指令, 也可以做到这一点。
>>> from __future__ import division
>>>
>>> 1 / 2 # returns realquotient
0.5
>>> 1.0 / 2.0 # returns real quotient
0.5
从Python 2.2 开始,一个新的运算符 //已经被增加进来, 以执行地板除: // 除法不管操作数何种数值类型,总是舍去小数部分,返回数字序列中比真正的商小的最接近的数字。
>>> 1 // 2 # 地板除, 返回整数
0 >>> 1.0 // 2.0 # 地板除, 返回浮点数
0.0 >>> -1 // 2 # 返回比 –0.5 小的整数, 也就是-1
-1
6:位操作符
Python整数支持标准位运算:取反(~),按位与(&),或(|),异或(^),左移(<<)和右移(>>)。Python 这样处理位运算:
负数会被当成正数的 2 进制补码处理。
左移和右移 N 位等同于无溢出检查的2的N次幂运算: 2**N。
对长整数来说, 位运算符使用一种经修改的 2 进制补码形式,使得符号位可以无限的向左扩展。
取反(~)运算的优先级与数字单目运算符相同,是所有位操作符中优先级最高的一个。 左移和右移运算的优先级次之,但低于加减法运算。与, 或, 异或运算优先级最低。所有位运算符按优先级高低列在下表中。
位运算符 |
功能 |
~num |
单目运算,对数的每一位取反。结果为-(num+1) |
num1 << num2 |
Num1 左移 num2 位 |
num1 >> num2 |
Num1 右移 num2 位 |
num1 & num2 |
num1 与 num2 按位与 |
num1 ^ num2 |
num1 异或 num2 |
num1 | num2 |
num1 与 num2 按位或 |
下面是几个使用整数30(011110),45(101101),60(111100)进行位运算的例子:
>>> 30 & 45
12 >>> 30 | 45
63 >>> 45 & 60
44 >>> 45 | 60
61 >>> ~30
-31 >>> ~45
-46 >>> 45 << 1
90 >>> 60 >> 2
15 >>> 30 ^ 45
51
7:divmod函数
divmod函数把除法和区域运算结合起来,返回一个包含商和余数的元组。对整数来说, 它的返回值就是地板除和取余操作的结果。对浮点数来说,返回的商部分是math.floor(num1/num2)。
>>> divmod(10, 3)
(3, 1) >>> divmod(3, 10)
(0, 3) >>> divmod(10, 2.5)
(4.0, 0.0) >>> divmod(2.5,10)
(0.0, 2.5)
8:round函数、math.floor函数
round(number[, ndigits])
返回精确到小数点后ndigits位的浮点数。如果省略了ndigits参数,则其默认为0。round()用于对浮点数进行四舍五入(不是精确的四舍五入)运算。它有一个可选的小数位数参数。如果不提供小数位参数,它返回与第一个参数最接近的整数(但仍然是浮点类型)。第二个参数告诉round函数将结果精确到小数点后指定位数。
round函数有时返回的结果可能不是意料之中的,比如round(2.675,2)返回2.67而不是2.68,这不是bug,而是因为大多数十进制小数不能由二进制浮点数精确的表示。(可以参考:Floating PointArithmetic: Issues and Limitations.)
>>> round(3)
3.0 >>> round(3.45)
3.0 >>> round(3.4999999)
3.0 >>> round(3.4999999, 1)
3.5 >>>round(-3.5)
-4.0 >>>round(-3.4)
-3.0 >>> round(-3.49)
-3.0 >>> round(-3.49, 1)
-3.5
值得注意的是 round() 函数是按四舍五入的规则进行取整。也就是round(0.5)得到1,round(-0.5)得到-1。
注意,如果需要对浮点数做精确度运算,还是不要用round了,因为可能会得到意想不到的结果,比如在Python 2.6.6中,有下列的例子:
>>>round(0.1, 2)
0.10000000000000001
int(), round(), math.floor()不同之处:
函数 int()直接截去小数部分。(返回值为整数)
函数 floor()得到最接近原数但小于原数的整数。(返回值为浮点数)
函数 round()得到最接近原数的整数。(返回值为浮点数)
一些例子结果如下:
int(1.2) +1.0
floor(1.2) +1.0
round(1.2) +1.0
--------------------
int(1.7) +1.0
floor(1.7) +1.0
round(1.7) +2.0
--------------------
int(-1.2) -1.0
floor(-1.2) -2.0
round(-1.2) -1.0
--------------------
int(-1.7) -1.0
floor(-1.7) -2.0
round(-1.7) -2.0
9:Python 提供了两个内建函数来返回字符串表示的8进制和16进制整数。它们分别是oct()和 hex()。它们都接受一个整数(任意进制的)对象,并返回一个对应值的字符串对象。例子:
>>> hex(255)
'0xff' >>> hex(23094823l)
'0x1606627L' >>> hex(65535*2)
'0x1fffe' >>> oct(255)
'' >>> oct(23094823l)
'0130063047L'
10:布尔型
从Python2.3开始,Python添加了布尔类型。
布尔值看上去是“True” 和“False,但是事实上是整型的子类,对应与整数的1 和0。
没有__nonzero__()方法的对象的默认值是 True。
对于值为零的任何数字或空集(空列表、空元组和空字典等)在Python中的布尔值都是False。
在数学运算中,Boolean值的True 和False分别对应于1 和 0。
11:十进制浮点数
从Python2.4 起(参阅PEP327)十进制浮点制成为一个Python 特性。这主要是因为下面的语句经常会让一些编写科学计算或金融应用程序的程序员抓狂:
>>> 0.1
0.1000000000000001
之所以这样,是因为绝大多数C语言的双精度实现都遵守IEEE 754 规范,其中52 位用于底。因此浮点值只能有52位精度,十进制小数不能由二进制浮点数精确的表示。
使用十进制来做同样的事情,感觉就会好很多,它可以有任意的精度。注意,不能混用十进制浮点数和普通的浮点数。你可以通过字符串或其它十进制数创建十进制数浮点数。必须导入 decimal 模块以便使用 Decimal 类:
>>> from decimal import Decimal
>>> dec = Decimal('.1')
>>> dec
Decimal("0.1")
>>> print dec
0.1
>>> dec + 1.0
Traceback (most recent call last): File"<stdin>", line 1, in ?
File "/usr/local/lib/python2.4/decimal.py",line 906, in __add__
other = _convert_other(other)
File "/usr/local/lib/python2.4/decimal.py",line 2863, in
_convert_other
raise TypeError, "You can interact Decimal only withint, long or
Decimal data types."
TypeError: You can interact Decimal only with int, longor Decimal data types.
>>>
>>> dec + Decimal('1.0')
Decimal("1.1")
>>> print dec + Decimal('1.0')
1.1
十进制数和其它数值类型一样,可以使用同样的算术运算符。浮点数,参考 http://www.zhihu.com/question/20128906
Python基础:02数字的更多相关文章
- python基础之数字、字符串、列表、元组、字典
Python基础二: 1.运算符: 判断某个东西是否在某个东西里面包含: in 为真 not in 为假 (1).算术运算符: 运算符 描述 实例 + 加 表示两个对象相加 a + b输出结果3 ...
- Python基础之:数字字符串和列表
目录 简介 数字 字符串 字符串对象str 列表 简介 Python的主要应用是进行科学计算,科学计算的基础就是数字,字符串和列表.本文将会详细的给大家介绍一下这三个数据类型的使用情况. 数字 数字是 ...
- python基础 --02
常见的数据类型 列表 在python中,列表的创建可以是由[]两个方括号组成的.在其他语言中,被称之为数组. 列表里可以存放一组值,并且系统默认的给列表里的每一个元素以索引值,方便查找和使用. 如下: ...
- 0603 python 基础02
作业1:ANSI和utf8的区别? ASCII是用来表示英文字符的一种编码规范,每个ASCII字符占用1个字节(8bits). 可以表示的最大字符数是256,一般只用前128个(最高位为0),其中包括 ...
- python基础类型—数字(Number)
Python3 支持 int.float.bool.complex(复数). 在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long. 像大多数语言一样,数 ...
- Python 基础语法——数字和表达式(包含数学上的一些函数)
>>> 2+2 4 >>> 1/2 0 >>> 1.0/2.0 0.5 >>> 1/2.0 0.5 >>> 1 ...
- python基础(数字、字符串、布尔值、字典数据类型简介)
一 执行第一个python程序 1.下载安装python2.7和python3.6的版本及pycharm,我们可以再解释器中输入这样一行代码: 则相应的就打出了一句话.这里的print是打印的意思.你 ...
- Python基础02
6.变量定义的规则: # 变量,只能由 字母 数字 下划线 特例:不能用数字开头 Python关键字,也不能使用 'and', 'as', 'assert', 'break', 'class', 'c ...
- python基础知识-数字
数字分为: 整数(int) 长整型(long) 浮点型(float) 一,整数 整数(int):即不带小数点的数字,如 12 ,45 ,0 ,3 #!/usr/bin/env python class ...
- python基础02 基本数据类型
摘要:简单的数据类型以及赋值 变量不需要声明 python的变量不需要声明,你可以直接输入: >>>a = 10 那么你的内存里就有了一个变量a, 它的值是10,它的类型是integ ...
随机推荐
- nginx、php-fpm启动脚本
Nginx官方启动脚本 //service nginx stop|start|restart|reloadtouch /etc/init.d/nginx chmod nginxvi /etc/init ...
- 移动端meta汇总
part1 一.天猫(http://m.tmall.com) <title>天猫触屏版</title> <meta content="text/html; ch ...
- htmlunit第一个爬虫演示 目标网址http://ent.sina.com.cn/film/
基本都要放弃了 springmvc 配置了htmlunit之后无法运行,都不能正常实例化webclient,但是突然想起来用maven应用程序测试一下 结果竟然就可以了.好吧,还是有希望的 大佬博客 ...
- pycharm解决无法调用同文件夹下的文件
一.将所有的文件放在project这个根目录下面 二.添加一个空的__init__.py 文件 三.选中project根目录,点击右键选择make_directory as-->sources ...
- python基础--数据类型的常用方法1
1.数字类型 整型 用途:存qq号,手机号,不带字母的身份证号... 进制转换: 二进制转十进制:10 --> 1*(2**1) + 0*(2**0) 2 八进制转十进制: 235 --& ...
- Win7。56个进程让我头疼
乱七八糟的进程一个一个往外蹦,如此痛苦. 安装了一个VM9,进程数量+5,安装了卖咖啡的,进程数量+5. 除去这10个,系统进程数量还有46个....还是太多... 64位系统,真的很痛苦,还没有怎么 ...
- PYTHON网络爬虫与信息提取[网络爬虫协议](单元二)
robots.txt在网站的根目录下 遵守 自动或人工识别robots.txt再进行内容爬取 约束性:建议性,不遵守协议,存在法律风险. 基本语法: User-agent: * Disallow: / ...
- 阿里云出手SaaS生态,中国SaaS市场小而不强有望破解
企业服务SaaS市场还有很大的增长空间.SaaS的鼻祖Salesforces今年5月迈上了千亿美元市值的门槛,再一次为ToB市场注入了兴奋剂.单单一个SaaS CRM,目前全球的市场规模就超过400亿 ...
- 微信小程序开发之图片等比例缩放 获取屏幕尺寸图片尺寸 自适应
wxml: <image style="width: {{imagewidth}}px; height: {{imageheight}}px;" src="{{i ...
- Excel按照某一列的重复数据设置隔行变颜色效果
问题:如图所示,想按照A列中的重复数据设置隔重复行变颜色的效果,能否通过条件格式命令实现. 方法1:(最佳答案) 条件格式公式:=MOD(SUMPRODUCT(--($A$1:$A1<>$ ...