[TOC]
>[success] # 数字的处理
~~~
1.python 中要格外的注意浮点类型的数字进行,相对的 ,因为python底层cpu的浮点运算单元,保存的时候是按照原始表现
形式,例如:
a=2.1
b=4.2
print(a+b) # 6.300000000000001
正是因为这种原因,所引入下面处理方法
~~~
>[danger] ##### 取整操作 --- round
~~~
round(number, ndigits=None)
1.round 中有两个参数,第一个是要处理的值,第二个参数,为正整数时是要保留的小数位,负数是要舍弃的整数数位,从个
位开始
2.round 不像四舍五入,逢五进一,而是默认最近的偶数,例如:
"2.4 输出 2 ,2.5输出的2,3.5输出的是4,2.6 输出3,3.6输出的是4"
~~~
~~~
num1 = round(1.23,1)
num2 = round(1.25,1)
num3 = round(1.35,1)
num4 = round(1.35)
num5 = round(105,-1)
print(num1, num2, num3, num4,num5)
打印结果:
1.2 1.2 1.4 1 100
~~~
>[danger] ##### 将数字以固定格式输出展示 --- format
~~~
1.如果只是将,所得到的数字做展示处理,可以使用format
~~~
~~~
x=1.233
a = format(x,'0.2f')
print(a,type(a))
打印结果:
1.23 <class 'str'>
~~~
>[danger] ##### 更精准的操作 --- decimal
~~~
1.当我们在金融等,对数字要求敏感的代码的时候,我们可以为此牺牲掉一些性能,使用decimal
2.当使用decima 对象进行转化求和的时候,对比也需要使用decimal 对象来进行比较
~~~
~~~
from decimal import Decimal
a = Decimal('4.2')
b = Decimal('2.1')
c = a+b
print(c)
print(a+b == 6.3)
打印结果:
6.3
False
~~~
* 对 decimal 进行四舍五入
~~~
from decimal import Decimal,localcontext
a = Decimal('1.3')
b = Decimal('1.7')
c = a/b
print(c)
with localcontext() as ctx:
ctx.prec = 3
print(a/b)
打印结果:
0.7647058823529411764705882353
0.765
~~~
>[danger] ##### 对二进制/八进制/十进制的转化
* 将十进制 分别转换成 二进制/八进制/十六进制
~~~
x = 1234
b = bin(x)
o = oct(x)
h = hex(x)
print(b, o, h,)
打印结果:
0b10011010010 # 二进制
0o2322 # 八进制
0x4d2 # 十六进制
~~~
* 去掉前缀,将十进制转换成二进制/八进制/十六进制
~~~
x = 1234
b1 = format(x, 'b')
o1 = format(x, 'o')
h1 = format(x, 'x')
print(b1, o1, h1)
打印结果:
10011010010
2322
4d2
~~~
* 将 二进制/八进制/十进制转换成 十进制
~~~
b1 = int('10011010010', 2)
o1 = int('2322', 8)
h1 = int('4d2', 16)
print(b1, o1, h1)
打印结果:
1234
1234
1234
~~~
>[danger] ##### 分数格式展示 --- fractions
* 分数展示
~~~
from fractions import Fraction
a = Fraction(5, 4)
b = Fraction(7, 16)
print(a,b)
打印结果:
5/4
7/16
~~~
* 获得分子分母
~~~
c = a*b
print(c)
print(c.numerator)
print(c.denominator)
print(float(c))
打印结果:
35/64
35
64
0.546875
~~~
* 小数转换挣分数
~~~
x = 3.75
print(Fraction(*x.as_integer_ratio()))
打印结果:
15/4
~~~
- PYTHON-- 基础
- Python -- 变量、常量、注解
- 算数\比较\赋值\逻辑运算符
- Python -- input 控制台用户输入
- Python -- 流程控制/循环语句
- Python -- 切片
- Python -- 数据类型
- 基础数据类型
- int -- 数字类型
- str -- 字符类型
- bool -- 布尔类型
- list -- 列表
- type -- 元祖
- dict -- 字典
- set -- 集合
- Python -- 深浅copy
- Python -- 文件的读写
- Python -- 函数
- 函数 -- 做参数使用
- 函数 -- 闭包
- 函数 -- 生成器
- 函数 -- 列表推导式
- 案例
- 基础案例一
- 基础案例二
- 基础案例三
- COOKBOOK
- LIST、STR、DICT、TUPLE
- LIST - 列表方法总结
- 一、序列拆分成单独变量
- 二、* 妙用
- 三、deque- 双向队列
- 四、求找到最大或最小的N个元素
- 4.1 heapq-- 简单使用
- 五、去重并保持列表顺序不变
- 六、切片slice
- 七、counter 统计序列中元素次数
- 八、itemgetter 列表套着字典排序
- 九、处理大量的列表数据
- 十、随机事件处理列表
- DICT - 字典的总结方法
- 一、defaultdict 解决 KeyError
- 二、OrdereDict有序字典
- 三、zip 和 max/min 比较
- IDCT和LIST- 推导式
- 一、LIST 推导式
- 二、字典推到式
- TUPLE-元组
- 一、命名元组
- STR-字符串
- 一、常见的字符串方法
- 二、字符串拆分
- 三、字符串的位置匹配
- 四、字符串替换
- 五、正则大小写/换行匹配
- 六、对字节类型处理
- 数字、日期、时间处理
- 一、数字的处理
- 二、时间换算
- 2.1 时间运算
- 2.2计算某一时刻上周几的日期
- 2.2对时间转换格式优化
- 迭代器和生成器
- 一、iter 迭代器 使用案例
- 二、生成器 yeild
- 三、构建一个反向迭代方法
- 四、实现反正函数构造
- 五、迭代对象切片/跳过元素
- 六、迭代出所有的组合排列
- 七、索引-值迭代序列化
- 八、zip 同时迭代多个序列
- 九、同时循环多个可迭代对象
- 十、yield from 递归案例
- 十一、合并序列,并按顺序输出
- 十二、使用 iter 替代 while True
- 操作文件
- 一、处理文件路径
- 二、检测文件/获取文件信息
- 函数
- 一、函数基本案例使用
- 二、匿名函数
- 三、回调函数
- 四、闭包实现一个单个方法类
- 五、函数嵌套回调函数
- 类与对象
- 一、str/repr--让类字符串表示
- 二、format -- 格式化类的内容
- 三、with -- 上下文管理类
- 四、创建节省内存的类
- 五、将类里面方法变成属性
- 六、调用父类方法
- 七、扩展子类中的属性
- 八、创建新的类或者实类属性
- 九、简化数据结果,简化init
- 十、python 接口写法
- 十一、通过类属性创建委托访问
- 十二、__new__重新初始化init
- 十三、通过字符串调用类
- 元编程
- 一、装饰器
- 1.1 去掉装饰器修饰
- 1.2 可接受参数装饰器
- 1.3利用装饰器对函数参数类型检查
- 1.4编写类装饰器
- 1.5为类方法和静态方法加装饰器
- 1.6通过装饰器给装饰函数加参数
- 线程和进程