Math python整数近似

Math python整数近似,math,python-3.2,Math,Python 3.2,在python中,函数math.log(1000,10)返回 2.9999999998或某个近似值(通常每三分之一个整数会这样做) 这首先是一种混乱,尽管我认为没有太多(除可分性测试外)可以做。 第二,这不是我想要的价值,当然,我应该如何继续?强制转换为int将明显返回2而不是3。。。那么,使用什么方法来获得最接近的整数?在这种情况下和一般情况下,请。在我接受答案之前,有人删除了他/她的答案,所以我写了我的答案,不过是一个总结 我喜欢的两种选择: 在这种特殊情况下,由于操作是math.log(1

在python中,函数
math.log(1000,10)
返回
2.9999999998或某个近似值(通常每三分之一个整数会这样做)

这首先是一种混乱,尽管我认为没有太多(除可分性测试外)可以做。

第二,这不是我想要的价值,当然,我应该如何继续?强制转换为int将明显返回2而不是3。。。那么,使用什么方法来获得最接近的整数?在这种情况下和一般情况下,请。

在我接受答案之前,有人删除了他/她的答案,所以我写了我的答案,不过是一个总结

我喜欢的两种选择:

在这种特殊情况下,由于操作是
math.log(1000,10)
,因此可以用显示更高精度的
math.log10(1000)
替换它


在更一般的情况下,舍入(math.log(1000,10))将舍入2.999。。。对于整数3,这将是更多的问题。

3>>math.log10(1000)
3.0
@Zhenya感谢这篇文章,但即使我不是一名计算机科学家,我也想象了很多。因此,除非你喜欢冗长的技术论文,否则这不是一个答案,也不是一个真正有趣的答案。问题是,这可能是答案被删除的原因,因为它还将
math.log10(500)
四舍五入为3
math.log10
做得很好,但是
math.log10(10**110)
返回
110.00000000000001
,math.log10(10**110-10**93)也是如此。和
math.log10(10**20-10**5)
返回
20.0
。如果想要得到精确的结果,就必须进行整数运算。