【问题标题】:Division in Python int (1000000000000000000/3)=333333333333333312Python int 中的除法 (1000000000000000000/3)=333333333333333312
【发布时间】:2018-01-06 23:29:57
【问题描述】:

在 Python 中

int (1000000000000000000/3)=333333333333333312

但应该是:

int (1000000000000000000/3)=333333333333333333

我是 python 新手。

【问题讨论】:

  • 您的“真实”答案是一个近似值(即,您使用 int 强制转换将结果四舍五入),Python 生成的结果也是如此:它只是您的近似值更接近。恐怕这是与领土有关的(即对实数的逼近的有限计算)。如果您需要比标准资源更高的准确性,那么您需要在您使用的任何语言环境中使用专业库。
  • @adrianmcmenamin:您的解释有些误导,舍入误差不是由 int 强制转换造成的,而是由浮点除法造成的。 Python 的 int 函数是浮点数“向零截断”操作的精确实现,但它不会消除其参数中已经存在的舍入错误。
  • 我没有说舍入误差是由演员阵容造成的。我只是在说明 OP 寻求一个近似值,不幸的是得到了一个比预期更差的值 - 但每个近似值都有出错的风险,并且任意精度可能需要特殊的库。

标签: python-3.x arithmetic-expressions integer-division


【解决方案1】:

您需要应用地板除法// 才能在 python3 中得到如下结果:

In [1]: 1000000000000000000//3
Out[1]: 333333333333333333

【讨论】:

  • 当然,在这种情况下,您甚至不需要用int 显式转换为整数,因为下除法的结果已经是整数了。
  • @Rörd 抱歉,我在通过 python2 检查时忘记删除它。谢谢指出
  • 是否有任何解释:int (1000000000000000000/3)=333333333333333312 为什么会给出这个结果?
猜你喜欢
  • 2014-04-08
  • 1970-01-01
  • 2019-10-11
  • 1970-01-01
  • 2011-06-08
  • 2021-11-17
相关资源
最近更新 更多