zoukankan      html  css  js  c++  java
  • 第二章 数值类型

    按照类型分类:

    数值:整型、浮点型、布尔型、复数
    序列:列表、字符串、字节
    映射:字典

    集合:集合

    按照可修改性分类:

    可修改类型   :列表,字典,集合
    不可修改类型:数值,字符串,元组


    一、 数值类型

    1. 整数类型

    (1) 定义: 变量名 = 整数类型
    eg. a = 12
    (2) 取值范围
    在python2.x中,区分int和long,超过32位使用long存储
    在python3.x中,不分整型和长整型,自动判断
       根据长度自动决定类型
       整型最大值取决于操作系统
    	import sys
    		print(sys.maxsize) #即二的六十四次方减一
    (3) 进制手工转换(二进制八进制十进制十六进制)
    > print(),等默认使用十进制


    a. 定义前缀

    0b --- 二进制 ---    bin()
    0o --- 八进制 --- oct()
         --- 十进制    ---    int()
    0x --- 十六进制 ---    hex()

    b. 十进制和其他进制 ---- 下除取余法

    c. 其他进制转十进制 ---- 乘幂法

    d. 二进制转八进制 ---- 三位一转,也可以反向原理实现八进制转二进制

                                     

    e. 二进制转十六进制 ---- 四位一转

    (4) 机器进制转换---bin,oct, int, hex 通过内置函数转化成特定类型
    > 注意:bin,oct,hex会返回字符串,int返回整型 
    > int默认十进制,如果逗号后面加数字n(缺省值),代表前面的数为n进制
            
    print(int(123,16))


    (5) int(value, 缺省(进制)= 10)函数的作用:

    a. 浮点数向零取整 --- int(3.14)

    b. 字符串转十进制 --- int('FZ', 36) > 575


    二、 布尔类型(True / False) --- 本质上属数值类型

    应用场合: 返回值或者作为逻辑运算符两侧的值


    三、 浮点数

    小数,浮点类型只支持十进制

    1. 定义

    变量名 = 小数
    # 浮点类型首位可以是0,但是整型不可以

    2. 科学计数法

    a = 2e20

                    ##### 该值超过存储值最大值

    3. 取值范围:有界限

    通过sys.float_info.max表示最大值

    4. 特殊浮点数 

                --- 无穷大的四则运算, 若无法确定运算结果仍为无穷大, 那么运算结果就是一个NaN

    a. inf         --- 无穷大、无穷小
    b. NaN     --- 不确定量          #自己和自己也不相等
    print(float('NaN'))

        判断方法:
            x = float('nan')
            import math
    	math.isnan(x)

            5. 浮点类型的不精确性

                 --- 有的小数是无限小数,在计算机中近似存储

            print(10/3) --- 0.333333333333333333335    # 无限小数省略存储
    a. 小数转成二进制小数(规则,小数位*2,得到结果取整数,一直取,从上到下)
    0.1   *2  ----- 0
    0.2   *2  ----- 0
    0.4   *2  ----- 0
    0.8   *2  ----- 1
    0.6   *2  ----- 1
    0.2   *2  ----- 0
    0.4   *2  ----- 0
    0.8   *2  ----- 1
    0.6   *2  ----- 1 ... 
    b. 尽量避免数量级相差很大的浮点数之间进行计算
    f1 = 5e20
    f2 = 1
    print(f1+f2)   >>>   5e20
    > 原因: 计算存储位数有限   ##########
    c. 尽量避免等值判断
    f1 = 0.1
    f2 = 0.2
    print(2*f1 == f2)
    print(f1+f2) >>> 0.30000000000000004
    e. 浮点数不精确性的解决方法   ---- 使用decimal模块下Decimal类(l存储位数默认为28位,实际也是一个省略值)
            decimal.Decimal(value)代表真实值(28位默认)
    >>> import decimal
    >>> a = decimal.Decimal(1/3)
    >>> a
    Decimal('0.333333333333333314829616256247390992939472198486328125')
    >>> a == 0.333333333333333314829616256247390992939472198486328125
    True
    > 解决办法(使用字符串): x = decimal.Decimal('0.1'+'0.2')
    > 显示特殊浮点型的原型 
        
    print(decimal.Decimal('inf')+1)  #>>> Infinity 和无穷大类型运算仍然是浮点数
    print(decimal.Decimal('inf')+1)  #>>> 报错,这个类不能和浮点型运算
    print(decimal.Decimal('nan'))    #>>> NaN
    print(decimal.Decimal('inf'))    #>>> Infinity

    d. 修改有效位数 --- 通过getcontext()修改的有效位数,修改运算结果的位数,Decimal类默认位数为28位。 ----四舍五入
        decimal.getcontext().prec = 10

    四、 复数类型

    x = 1- 2j
    实部和虚部都是浮点类型

    五、四种类型之间的转换

    int(value):        默认为int() =  0,向零取整,---# 复数不能转整型
    float(value):        默认为float() = 0.0,转换成浮点数  ---# 复数不能转换成浮点型
    complex(value):     默认值complex = 0j,什么都可以转
    bool(value):       默认值bool()=False,什么都可以转,
    > 两种类型做运算,取等级高类型 (复数> 浮点> 整型> 布尔)


  • 相关阅读:
    20145229&20145316 《信息安全系统设计基础》 实验二 固件设计
    20145207 《Java 程序设计》实验三 (敏捷开发与XP实践)实验报告
    《Java 程序设计》课堂实践项目-mini dc
    20145207 《Java程序设计》第10周学习总结
    《Java 程序设计》课堂实践项目-命令行参数
    20145207 实验二《Java面向对象程序设计》实验报告
    20145207《Java程序设计》第9周学习总结
    20145207信息搜集与漏洞扫描
    20145207《Java程序设计》实验二(Java面向对象程序设计)实验报告
    20145207李祉昂《网络对抗技术》可选实验 shellcode注入与Return-to-libc攻击实验
  • 原文地址:https://www.cnblogs.com/geoffreyone/p/9899773.html
Copyright © 2011-2022 走看看