在Python中使用整数除法时,能否保持小数精度?

用户名

当我将2/3除以0.66666666,当我将2 // 3除以0。

有什么方法可以计算整数除法,同时仍然保留小数点?

编辑:看起来我可能让很多人感到困惑,我不好。因此,我的教授告诉我的是,由于标准除法(2/3)仅返回0.666666666666(最多203位),因此当我要进行需要小数点后超过203位的计算时,它没有用。我想知道是否有一种方法可以做2 // 3(将返回0),但最终还是得到.6666

w

对于某些有限的小数,可以使用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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Python中使用整数除法时,能否保持小数精度?

来自分类Dev

整数很长时的Python整数除法

来自分类Dev

除法时的JavaScript精度

来自分类Dev

不使用浮点,双精度或除法舍入整数

来自分类Dev

Python浮点精度,小数点后无整数精度

来自分类Dev

python除法精度

来自分类Dev

使用ORM时,小数与整数

来自分类Dev

使用 awk 时由于除法而获得更多小数位

来自分类Dev

强制整数除法双精度数?

来自分类Dev

提高浮点除法的精度(python)

来自分类Dev

提高浮点除法的精度(python)

来自分类Dev

在Python中使用多重处理时保持秩序

来自分类Dev

在Python中使用多重处理时保持秩序

来自分类Dev

Python中小数的精度

来自分类Dev

Python设置小数精度

来自分类Dev

在C ++中使用pow时精度下降

来自分类常见问题

Python3整数除法

来自分类Dev

类中的Python'//'整数除法

来自分类Dev

当值为整数时,将双精度显示为字符串忽略小数部分

来自分类Dev

在Python中使用生成器函数实现长除法

来自分类Dev

在Python中使用累积数进行元素明智的除法?

来自分类Dev

任意精度整数除法,32位余数怎么处理?

来自分类Dev

为什么在使用小数时,用Console.Write不能显示双精度的小数部分?

来自分类Dev

为什么在整数除法中使用应用仿函数不如单子?

来自分类Dev

在awk脚本中使用除法

来自分类Dev

Python小数类型精度错误

来自分类Dev

在熊猫中使用read_csv时精度下降

来自分类Dev

不使用/或*运算符的整数除法

来自分类Dev

数组| 使用数组除法查找重复整数?