Python中的分数

时间:2012-10-06 20:50:06

标签: python fractions

无论如何计算分数,例如2/3或1/2,在Python中没有导入math模块?

代码段很简单:

# What is the cube root of your number
n = float(raw_input('Enter a number: '))
print(n**(1/3))

非常简单的代码,但在任何地方,我都会告诉我导入math模块。我只想将该片段添加到我正在处理的更大的代码中。我一直得到1作为我的答案,因为Python感觉像1/3是0而不是.333333333。我可以把.33333,但这只是一个临时修复,我想知道如何为未来的项目执行这个非常基本的计算。

3 个答案:

答案 0 :(得分:12)

您可以使用from __future__ import division在必要时进行整数除法返回浮点数(这样1/3将导致0.333333 ......)。

即使不这样做,您也可以通过1.0/3代替1/3获取小数值。 (1.0使第一个数字成为浮点数而不是整数,这使得除法运算正确。)

答案 1 :(得分:3)

标准库中有一个分数模块,可以对分数执行各种任务。如果您对分数进行了大量计算,则可以在不将它们转换为浮点数的情况下执行这些计算。 http://docs.python.org/library/fractions.html

答案 2 :(得分:2)

只需添加小数和小数部分即可将操作转换为浮点数:

>>> n=float(raw_input('Enter a number: ')); print n**(1.0/3)
Enter a number: 2
1.25992104989

或者,明确使用float

>>> n=float(raw_input('Enter a number: ')); print n**(float(1)/3)
Enter a number: 2
1.25992104989

或者,使用Python 3的划分方式:

>>> from __future__ import division
>>> n=float(raw_input('Enter a number: ')); print n**(1/3)
Enter a number: 2
1.25992104989

这三种方法中的任何一种都有效。我更喜欢第一个。