Python3中,数字分为四种——int,float,bool,complex

int(整型)

  和数学上的整数表示没啥区别,没有大小限制(多棒啊,不用写整数高精了),可正可负。还可表示16进制,以 0x 开头,后面接0~9的数字和a~f的小写字母。

  网上有博客说常规整型最大值可以用以下命令打印

import sys
print(sys.maxsize)

  然后我得到了9223372036854775807——$2^{63}-1$——即C/C++中long long型的最大值。可能是大于这个值就换成高精之类的表示了吧,唯一的限制只有内存容量。

float(浮点型)

  就是小数,可以用一般的表示方法,也可以用科学计数法,这时浮点的意思才体现得出来——1.23e9==12.3e8。当计算过程中浮点数太大或是太小时,解释器会用科学计数法表示,我试了一下我的python3.7.0,最多保留17位有效数字。超出某个范围(见下)就会抛出错误——

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OverflowError: (34, 'Numerical result out of range')

  浮点型的一些限制可以通过命令查看——

import sys
print(sys.float_info)
sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)

  可以看到,和C/C++的double差不多,依然存在浮点误差.http://0.30000000000000004.com/。可以导入decimal模块(十进制高精度小数)(这下连小数的高精都不用手写了,开心一下)对抗浮点误差,不过速度与float相比慢了好多。decimal用法(留坑)。还可以导入fractions模块进行分数运算。fractions用法(留坑)。

bool(布尔型)

  只有两种值——True(1)、False(0)。有3种运算——and、or、not,就是且、或、非。也可以和其他三种一起做运算,和整型做运算就转换成整型1或0,遇到浮点就转为浮点。

complex(复数)

  数学上的一个虚数$a+bi$(a为实部,b为虚部),在python中有三种表示方法 a+bj (大写J也可以。搞不懂为啥要用j不用i)或 complex(a,b) 。这里的实部和虚部都是浮点型。

  这里我们定义一个虚数 x=1+2j ,那么 x.real() 将返回其实部1.0(float型), x.imag()将返回其虚部2.0(float型), x.conjugate()将返回其共轭复数 1-2j (complex型)。abs()函数可以求一个复数的模。

各数据类型可进行的运算——

  int、bool、float的运算

    Python运算符

    大部分运算符和C/C++区别不大,有以下几点——

      1、多了幂运算符 ** 和整除符号 // (而"/"符号结果均为浮点数)

      2、不等于号除了 != 还有 <>

      3、判断大小是允许出现 a<b<c 的形式

      4、逻辑运算符是 and  or  not ,而不是 &&  ||  ! ,且运算数字为int型时,规则发生变化,返回的真值不只会是1(C/C++中,返回一个真值只会是bool型的0或1),而可能是参与计算的数。具体如下

         x and y ——如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。

         x or y ——如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。

         not x ——如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。

        可以用短路判断辅助理解和记忆。

      5、多了成员运算符 in 和 not in (not在前),用于判断某个值是否在某个序列(包括字符串、列表、元组)中,返回一个bool值

      6、多了身份运算符 is 和 is not (not在后),用于判断两个变量是否引用同一个对象(是否指向同一片内存区域),返回一个bool值(在Python学习笔记(2)这篇博文中变量部分提到过)

    附:Python运算符优先级(来自Python运算符)

    

    进行更多数学函数的计算,可以导入模块math import math ,然后可以大概像下面这样搞(更详细的留坑)

>>> print(math.sin(math.pi/2))
1.0

    当int型整除或取模时,一直满足这个公式a = (a//b)*(b) + (a%b),于是有负数参与的整除和取模就可以计算了。

  复数的计算

    两个复数间进行+、-、*、/四种运算的规则和高中数学中的一致,还可以进行乘方(**)运算。要以复数为参数进行更复杂的计算(如sin()cos()…)或是希望其他三种数据类型的计算过程可以返回复数而不是报错(如sqrt(-1)),那么就要导入cmath模块 import cmath (更详细的留坑)。

Python学习笔记 (2.1)标准数据类型之Number(数字)的更多相关文章

  1. Python学习笔记(三)数据类型

    在内存中存储的数据可以有多种类型,在Python中,能够直接处理的数据类型有以下几种: 数字(Numbers) 字符串(String) 列表(List) 元组(Tuple) 字典(Dictionary ...

  2. python学习笔记(二)— 数据类型

    一.变量.数据类型 1.计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同 ...

  3. Python学习笔记13:标准库之子进程(subprocess包)

    ubprocess包主要功能是运行外部的命令和程序.从这个意义上来说,subprocess的功能与shell类似. subprocess以及经常使用的封装函数 当我们执行python的时候,我们都是在 ...

  4. Python学习笔记(二)——数据类型

    1.数据类型 Python有五个标准的数据类型: Numbers(数字) String(字符串) List(列表) Tuple(元组) Dictionary(字典) 2.Python数字类型 Pyth ...

  5. Python学习笔记8:标准库之正則表達式

    Python拥有强大的标准库.从如今起,開始学习标准库中提供的一些经常使用功能. 首先看正則表達式(regular expression),它的主要功能是从字符串(string)中通过特定的模式(pa ...

  6. Python学习笔记2:基本数据类型

    Python中的变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象 ...

  7. Python学习笔记16:标准库多线程(threading包裹)

    Python主要是通过标准库threading包来实现多线程. 今天,互联网时代,所有的server您将收到大量请求. server要利用多线程的方式的优势来处理这些请求,为了改善网络port读写效率 ...

  8. python学习笔记(四)-数据类型

    0. 在 Python 中的数据类型详解 http://www.cnblogs.com/scios/p/8026576.html 1. 为什么布尔类型(bool)的 True 和 False 分别用 ...

  9. Python学习笔记(一)数据类型

    一.整型和浮点型 Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样 age=10 num=-35 score=98.8 二.布尔类型 布尔值和布尔代数的表示 ...

  10. Python学习 :六个标准数据类型

    一.Numbers(数字类型) 数字类型主要分为两种—— 整数(Integer)与 浮点数(Float) 整数分为整型和长整型(在Python3中已经不再区分为整型与长整型,统一称为整型) 注意:数字 ...

随机推荐

  1. Hadoop回收站及fs.trash参数详解

    前言: Linux系统里,个人觉得最大的不方便之一就是没有回收站的概念.rm -rf很容易造成极大的损失.而在Hadoop或者说HDFS里面,有trash(回收站)的概念,可以使得数据被误删以后,还可 ...

  2. [C陷阱和缺陷] 第7章 可移植性缺陷

      C语言在许多不同的系统平台上都有实现.的确,使用C语言编写程序的一个首要原因就是,C程序能够方便地在不同的编程环境中移植.   不同的系统有不同的需求,因此我们应该能够预料到,机器不同则其上的C语 ...

  3. Android 性能优化(10)网络优化( 6)Optimizing General Network Use

    Optimizing General Network Use This lesson teaches you to Compress Data Cache Files Locally Optimize ...

  4. 384 Shuffle an Array 打乱数组

    打乱一个没有重复元素的数组.示例:// 以数字集合 1, 2 和 3 初始化数组.int[] nums = {1,2,3};Solution solution = new Solution(nums) ...

  5. vs2012 jsoncpp 链接错误

    解决: 项目->属性->C/C++->代码生成->运行库->设置与使用的.lib的版本一致.

  6. Javascript DOM 编程艺术(第二版)读书笔记——基本语法

    Javascript DOM 编程艺术(第二版),英Jeremy Keith.加Jeffrey Sambells著,杨涛.王建桥等译,人民邮电出版社. 学到这的时候,我发现一个问题:学习过程中,相当一 ...

  7. Atmel studio 7.0 安装成功

    Atmel studio 7.0 安装成功 转载:   http://www.eeworld.com.cn/mcu/article_2017112436241.html 2018-07-2610:27 ...

  8. Mysql慢SQL与索引案例

    写在最前 关于慢sql的开启与配置查看之前我整理的文章: http://www.cnblogs.com/hanxiaobei/p/5515624.html 前提准备: tomcat7.x mysql- ...

  9. The user specified as a definer ('root'@'%') does not exist 解决方法

    mysql> grant all privileges on *.* to root@"%" identified by "."; Query OK, r ...

  10. 动软生成器添加Mysql注释

    1.解决没有mysql注释问题 替换原文件下载地址 2.更新Models模板 <#@ template language="c#" HostSpecific="Tr ...