问题汇总

学习中遇到的一些问题记个笔记。
  • Python
    • round函数
      • 关于round函数,常见的bug是round(2.675,2)返回结果2.67而不预料的2.68。这个很多人都解释过了,是因为浮点数机器存储时本身存在失真,2.675存储的值是2.674999999……。
      • 今天发现一个可能有关的bug。我从网页上抓了一组数据转存成DataFrame,这时DataFrame中的数值还是字符串格式,所以接着用str=str.astype('float64')将字符串转为浮点数。后面做运算时对两组数据做了乘法,str3=map(lambda x,y: round(x*y, 2), str_f1, str_f2),这里str_f1和str_f2分别是格式转为浮点数后的两个列,使用lambda函数时顺便用round函数取了两位小数。然后bug出现了。得到的结果里,既有121.16这样符合预期的格式,也有50.829999999999998, 164.08000000000001这样的古怪结果。更诡异的是这些不符合预期的数再怎么round(a, n)转化也没用。为什么会出现后面这类数,应该是str1字符串转为float64格式的数值时出现的失真,但是为什么round(a, n)函数会失效,无法精确到想要的小数位数,想不明白。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值