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 (更详细的留坑)。

最新文章

  1. Core Java 总结(字符和字符串类问题)
  2. Hexo静态博客搭建教程
  3. jquery取&lt;input&gt;的readOnly属性,O要大写
  4. Eclipse通过DDMS打开真机/data/data/目录
  5. web 音频文件自动播放(兼容所有浏览器)
  6. MySql索引简介
  7. Unity3d《Shader篇》漫反射
  8. 只有 DBA 才能导入由其他 DBA 导出的文件
  9. 通过WMI - Win32_Processor - ProcessorId获取到的并不是CPU的序列号,也并不唯一
  10. Introduction to Web Services
  11. jquery easyui二次开发总结(二)
  12. NYOJ-791 Color the fence (贪心)
  13. POI设置excel某列值为文本格式
  14. mysql实现主从备份
  15. 1.1.4 PROB Greedy Gift Givers
  16. TField OnValidate 事件
  17. Best quotes from The Vampire Diary(《吸血鬼日记》经典台词)
  18. Django 之Redis配置
  19. chattr 改变文件、目录属性 (chmod、passwd等涉及文件修改的命令提示Operation not permitted)
  20. 06 Go 1.6 Release Notes

热门文章

  1. Rails&#160;确认params的统一方法
  2. G41
  3. vue中sync,v-model----双向数据绑定
  4. 构造+暴力 Codeforces Round #283 (Div. 2) B. Secret Combination
  5. hibernate一对多查询
  6. CSS布局整理
  7. GAN生成图像论文总结
  8. CAD得到所有实体方法(网页版)
  9. Java编辑编译及运行环境
  10. Github Pages另一个选择:GitCafe-Pages