Python中/与//运算结果差异问题及解决方案咨询
Python浮点数与Decimal的取整逻辑困惑
浮点数整除的异常结果
执行以下代码时,得到了不符合预期的整除结果:
>>> -19.9871/2.8553 -7.0 >>> -19.9871//2.8553 -8.0
预期-19.9871//2.8553应返回-7.0,推测是浮点数精度误差导致。目前使用numpy.floor(-19.9871/2.8553)能得到预期结果,但希望找到更优的解决方案。
Decimal运算的取整矛盾
后续测试Decimal运算时,出现了取整方法的矛盾情况:
案例1:round得到正确结果
>>> decimal.Decimal(8.5659)/decimal.Decimal(2.8553) Decimal('2.999999999999999533405376125') >>> np.floor(decimal.Decimal(8.5659)/decimal.Decimal(2.8553)) 2 >>> round(decimal.Decimal(8.5659)/decimal.Decimal(2.8553)) 3 # *预期的//运算结果*
此案例中,round得到了符合预期的整除结果,而np.floor结果不符合。
案例2:floor得到正确结果
>>> decimal.Decimal(12.8489)/decimal.Decimal(2.8553) Decimal('4.500017511294785017834689091') >>> round(decimal.Decimal(12.8489)/decimal.Decimal(2.8553)) 5 >>> np.floor(decimal.Decimal(12.8489)/decimal.Decimal(2.8553)) 4 # *预期的//运算结果*
此案例中,np.floor得到了符合预期的整除结果,round结果不符合。
想请教如何统一处理这类取整问题,确保得到正确的整除结果?
内容的提问来源于stack exchange,提问作者Abel Gutiérrez
相关产品推荐
相关产品推荐

