在Python中使用整数除法时,我可以保持小数精度吗?

在Python中使用整数除法时,我可以保持小数精度吗?,第1张

概述当我除2/3时我得到0.66666666,当我做2 // 3时我得到0. 有没有办法在保持小数点的同时计算整数除法? 编辑:看起来我可能很困惑你,我的坏.所以我的教授告诉我,由于标准除法(2/3)只返回0.666666666666到203位数,所以当我想进行小数点后需要超过203位数的计算时,它没有用.我想知道是否有办法做2 // 3(将返回0)但不知何故仍然得到.6666到底 对于某些有限的小数 当我除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')>>> fFraction(14,15)>>> f.numerator14>>> f.denominator15>>> import decimal>>> decimal.Decimal(f.numerator) / decimal.Decimal(f.denominator)Decimal('0.9333333333333333333333333333')
总结

以上是内存溢出为你收集整理的在Python中使用整数除法时,我可以保持小数精度吗?全部内容,希望文章能够帮你解决在Python中使用整数除法时,我可以保持小数精度吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1193044.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存