【发布时间】: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