当我将2/3除以0.66666666,当我将2 // 3除以0。
有什么方法可以计算整数除法,同时仍然保留小数点?
编辑:看起来我可能让很多人感到困惑,我不好。因此,我的教授告诉我的是,由于标准除法(2/3)仅返回0.666666666666(最多203位),因此当我要进行需要小数点后超过203位的计算时,它没有用。我想知道是否有一种方法可以做2 // 3(将返回0),但最终还是得到.6666
对于某些有限的小数,可以使用Python的float.as_integer_ratio()
方法:
>>> 0.5.as_integer_ratio()
(1, 2)
对于2/3(不能用十进制精确表示),这将开始产生较不理想的结果:
>>> (2/3).as_integer_ratio()
(6004799503160661, 9007199254740992) # approximation of 2/3
对于有理数的任意精度,请在Python库中使用分数:
>>> import fractions
>>> fractions.Fraction('2/3')
Fraction(2, 3)
>>> Frac=fractions.Fraction
>>> Frac('2/3') + Frac('1/3') + Frac('1/10')
Fraction(11, 10)
>>> Frac('2/3') + Frac('1/6') + Frac('1/10')
Fraction(14, 15)
然后,如果要用十进制表示更准确,请使用Decimal库将整数分子和分母转换为任意精度的十进制:
>>> f=Frac('2/3') + Frac('1/6') + Frac('1/10')
>>> f
Fraction(14, 15)
>>> f.numerator
14
>>> f.denominator
15
>>> import decimal
>>> decimal.Decimal(f.numerator) / decimal.Decimal(f.denominator)
Decimal('0.9333333333333333333333333333')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句