在Python中使用整数除法时,我可以保持小数精度吗?
发布时间:2020-12-20 11:33:27 所属栏目:Python 来源:网络整理
导读:当我除2/3时我得到0.66666666,当我做2 // 3时我得到0. 有没有办法在保持小数点的同时计算整数除法? 编辑:看起来我可能很困惑你,我的坏.所以我的教授告诉我,由于标准除法(2/3)只返回0.666666666666到203位数,所以当我想进行小数点后需要超过203位数的计算时
当我除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库中使用fractions: >>> 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') (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |