数字数据类型

一、概述

  • 整数类型
  • 浮点类型
  • 复数类型
  • 数值运算操作符
  • 数值运算函数

二、整数类型

如果学给数学的化都可以理解,就是与数学中的整数概念一致

  • 可正可负,没有取值范围限制

  • pow(x, y) 函数,计算xy,想幂多少就幂多少

    pow(2, 10) # 1024
    pow(2, pow(2,5))  # 4294967296
    
  • 四种进制表示形式

    1. 十进制: 1024,8,32
    2. 二进制:以0b或0B开头:ob0001, 0B0010
    3. 八进制: 以0o或0O开:0o123, 0O321
    4. 十六进制: 以0x或0X开头:0x5b, 0X6a

    三、浮点数类型

    与数学中实数的概念一致

    • 带有小数点及小数的数字
    • 浮点数取值范围和小数精度都在存在限制,但常规计算可以忽略
    • 取值范围数量级约-10308至10308,精度数量级10-16

    浮点数间运算存在不确定尾数,不是bug

    0.1 + 0.3  # 0.4
    0.1 + 0.2  # 0.30000000000000004
    
    • 0.1: 53位二进制表示小数部分,约1016

      • 0.00011001100110011001100110011001100110011001100110011010 (二进制表示)
      • 0.1000000000000000055511151231257827021181583404541015625 (十进制表示)

    二进制表示小数,可以无限接近,但不完全相同

    0.1+0.2:结果无限接近0.3, 但可能存在尾数

    0.1 + 0.2 == 0.3  # False
    
    round(0.1+0.2, 1) == 0.3  # True
    

    3.1 round()函数

    • round(x, d):对x四舍五入, d表示小数要截取的位数
    • 浮点数间运算比较需要使用round()函数辅助
    • 不确定尾数一般发生再10^16左右, round()

    3.2 科学发表示浮点数

    • 使用字母e或E作为幂的符号,以10为基数,格式如下:<a>e<b>,表示 a*10b
    • 例如:4.3e-3 值为0.00439.6E5 值为 960000.0

    关于Python浮点数,需要知道多些。

    • 取值范围和精度基本无限制
    • 运算存在不确定尾数 round()
    • 科学计数法表示

    四、复数类型

    与数学中复数的概念一致

    如果x2x2 = -1,那么x的值什么?

    • 定义 j = −1 ,以此为基础,构建数学体系
    • a+bj 被称为复数,其中,a是实部,b是虚部

    4.1 复数实例

    z = 1.23e-4+5.6e+89j
    
    • 实部是什么?z.real 获得实部
    • 虚部是什么?z.imag 获得虚部

    五、数值运算操作

    5.1 一元操作符

    操作符是完成运算的一种符号关系

    操作符及使用 描述信息
    x + y 加,x与y之和
    x - y 减,x与y之差
    x * y 乘,x与y乘积
    x / y 除,x与y之商 eg: 10 / 3 结果为3.33333333333
    x // y 整数除,x与y之整数的商, 10 // 3 结果为:3
    +x x的本身
    -y y的负值
    x % y 余数,模运算, 10 % 3 结果为:1
    x ** y 幂运算,x的y次幂,xy ,当y为小数是,开放运算,10**0.5,结果为 :x1/2

    5.2 二元操作符

    二元操作符有对应的增强赋值操作符

    增强操作符及使用 描述信息
    x op= y 即 x = x op y ,其中,op为二元操作符

    二员操作符有以下:x += yx -= yx *= yx /= yx // yx %= yx **= y

    x = 3.1415
    
    x **= 3  # 与 x = x **3 等价  # 31.003533398375005
    

    5.3数据类型的关系

    类型间可进行混合运算,生成结果为"最宽"类型

    • 三种类型存在一种逐渐"扩展"或"变宽"的关系:整数-->浮点数-->复数
    • 例如:1234 + 4.2 = 1238.2(整数 + 整数 = 浮点数)

    六、数值运算函数

    一些以函数形式提供的数值运算功能

    函数及使用 描述
    abs(x) 绝对值,x的绝对值,abs(-1)结果为:1
    divmod(x,y) 商余,即(x//y, x%y),同时输出商和余数,divmod(10,3)结果为(3,1)
    pow(x,y[,z]) 幂余,(x**y)%z, [...]表示参数z可省略,pow(3, pow(3, 99), 10000)结果为4587
    round(x[,d]) 四舍五入,d是保留小数位数,默认值为0,round(1.234, 2)结果为:1.23
    max(x1,x2,x3,...,xn) 最大值,返回x1,x2,x3,...,xn其中最大值,n不限,max(1,2,5,8,9)结果为:9
    min(x1,x2,x3,...,xn) 最小值,返回其中x1,x2,x3,...,xn最小的值,你不限,min(3,4,6,8,0)结果为:0
    int(x) 将x变成整数,舍弃小数部分,int(123.4)结果为123;int("123")结果为:123
    float(x) 将x变成浮点数,增加小数部分,float(12) 结果为12.0; float("1.23") 结果为1.23
    complex(x) 将x变成复数,增加虚数部分,complex(4) 结果为 4 + 0j

七、小结

  • 整数类型的无限范围及4种进制表示
  • 浮点数类型的近似无限范围、小尾数及科学计数法
  • +、-、*、/、//、%、**、二元增强赋值操作符
  • abs()、divmod()、pow()、round()、max()、min()
  • int()、float()、complex()

八、练习

  1. 周一到周五进步0.01,然后双休日退步0.01,这个怎么计算
base = 1
factory = 0.01
for i in range(365):
    if i % 7 == 6:
        base *= (1-0.01)
    elif i % 7 == 0:
        base *= (1-0.01)
    else:
        base *= (1 + factory)
print("base:", base)
在当下的阶段,必将由程序员来主导,甚至比以往更甚。
原文地址:https://www.cnblogs.com/randysun/p/11196905.html