美文网首页
python笔记(三)数据类型 - 数字

python笔记(三)数据类型 - 数字

作者: 艺术家可达鸭 | 来源:发表于2018-12-15 19:13 被阅读0次

    类型

    整型 int

    python3 没有长整型、短整型,取值范围是无穷
    二进制表示(0b 开头),八进制表示(0o 开头),十六进制(0x 开头)
    内置函数 int():将一个数字或字符串转换成整型,直接舍弃小数部分

    浮点型 float

    浮点型虽然叫 float,但是类似与 Java 的 double,占 8 个字节
    内置函数 float():将整型或字符串转成浮点型

    复数 complex

    1+1j 这种,好久不见了,估计用不到了

    小数 decimal.Decimal (非内置类型)

    浮点型在计算时是缺乏精确性的,比如下面这种

    # 这是一个无限循环函数,因为 i 永远不可能等于 1.0
    i=0.1
    while i!=1.0: # 正确的做法是这里改为 i<=1.0
        print(i)
        i+=0.1
    

    Decimal 就是为了解决这一个问题

    from decimal import Decimal
    a = Decimal('0.1') + Decimal('1.01')
    # 输出结果为True
    print(a == Decimal('1.11'))
    

    Decimal 也可以用数字来初始化Decimal(0.1),但这样计算结果会和浮点型一样不精确
    除非提前设置全局精度decimal.getcontext().prec = 4,保留小数点后4位

    临时精度,在下面 with 语句中,保留小数点后 2 位,出了 with 语句就使用全局精度

    with decimal.localcontext() as ctx:
        ctx.prec = 2
        pass
    

    分数 fractions.Fraction (非内置类型)

    # a的值是1/2
    a = Franction(1,2)
    

    算术运算

    加减乘除同 java,没有自加自减操作符,但是有 += 这种
    %:取模,即返回余数,同 java,因为不熟,所以单独写出来
    :幂运算,且优先级较高,比如2*2**3的结果是 16
    //:floor 除法,
    向下取整**,也叫整除法

    位运算

    print 函数会把数字都转成十进制的形式输出,如果要查看数字的其他进制的表示,可以用 bin、oct、hex 把 int 转成 2、8、10进制的字符串
    2、8、10 进制的表示形式分别为:0b、0o、0x;如果要表示负数,则是 -0b 这种形式

    二进制运算符:&、|、~、^(异或)、<<、>>
    位运算(除了左移右移外)包括符号位,正数取反会变成负数

    a<<n:等效于a*2**n
    a>>n:等效于a//2**n
    【按位移】操作的是补码,所以就不要纠结负数的位移结果了,正数的话,左移右移都是补零,左移不会有舍弃,所以数值会越来越大,右移会有舍弃

    相关文章

      网友评论

          本文标题:python笔记(三)数据类型 - 数字

          本文链接:https://www.haomeiwen.com/subject/cioahqtx.html