实训第二天之基础问题解决

如何解决python中小数精确问题以及原因

  • 原因:因为 Python 中使用双精度浮点数来存储小数。在 Python 使用的 IEEE 754 标准(52M/11E/1S)中,8字节64位存储空间分配了52位来存储浮点数的有效数字,11位存储指数,1位存储正负号,即这是一种二进制版的科学计数法格式。虽然52位有效数字看起来很多,但麻烦之处在于,二进制小数在表示有理数时极易遇到无限循环的问题。其中很多在十进制小数中是有限的,比如十进制的 1/10,在十进制中可以简单写为 0.1 ,但在二进制中,他得写成:0.0001100110011001100110011001100110011001100110011001……(后面全是 1001 循环)。因为浮点数只有52位有效数字,从第53位开始,就舍入了。这样就造成了标题里提到的”浮点数精度损失“问题。
  • 解决方法:
    -1. round内置函数: round()如果只有一个数作为参数,不指定位数的时候,返回的是一个整数,而且是最靠近的整数(这点上类似四舍五入)。但是当出现.5的时候,两边的距离都一样,round()取靠近的偶数。
  • 2.使用格式化:>>> a = ("%.2f" % 2.635)
    >>>a
    2.63
    列表生成式
  • 1:首先是使用range模块。
    a=[]
    for i in range(1,9):
    a.append(i)
    print(a)
    结果:[1, 2, 3, 4, 5, 6, 7, 8]
  • List item
  • 2:第二种
    print([x for x in range(1,10)])
    结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]

匿名函数,高阶函数,装饰器

  • 1:匿名函数:匿名函数指一类无须定义标识符的函数或子程序。Python用lambda语法定义匿名函数,只需用表达式而无需申明。
    例如:lambda [arg1 [,arg2, … argN]] : expression
    具体为:>>> print((lambda x,y:x-y)(3,4))
    >>>-1
    可以直接调用。
    高阶函数
  • 概念:一个函数可以接收另一个函数作为参数,这种函数就称之为高阶函数。
    装饰器
    就是在不改变原本代码的基础上对其进行改变,@函数名。
    类的继承及self的理解
class  A ():
    def __init__(self,name):
        self.name=name
class B( A ):
    def __init__(self):
        super(B,self).__init__(name='xiaoming')
c=B()
print(c.name)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值