问题汇总

来源:互联网 发布:mac word 首选项 编辑:程序博客网 时间:2024/06/05 13:30

学习中遇到的一些问题记个笔记。

  • 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)函数会失效,无法精确到想要的小数位数,想不明白。
原创粉丝点击