分数运算
时间:2010-07-13 来源:lufeng369
#
gcd=lambda a,b:a if b==0 else gcd(b,a%b)
class F:
def __init__(self,fenzi,fenmu=1):
while fenzi!=int(fenzi) or fenmu!=int(fenmu) : fenzi*=10;fenmu*=10
g=gcd(fenzi,fenmu)
self.fenzi=int(fenzi//g)
self.fenmu=int(fenmu//g)
def __str__(self):
return str(self.fenzi)+'/'+str(self.fenmu)
def __add__(self,other):
fenzi=self.fenzi*other.fenmu+other.fenzi*self.fenmu
fenmu=self.fenmu*other.fenmu
g=gcd(fenzi,fenmu)
return F(fenzi//g,fenmu//g)
def __neg__(self):
return F(-self.fenzi,self.fenmu)
def __sub__(self,other):
return self+(-other)
def __mul__(self,other):
fenzi=self.fenzi*other.fenzi
fenmu=self.fenmu*other.fenmu
g=gcd(fenzi,fenmu)
return F(fenzi//g,fenmu//g)
def __invert__(self):
return F(self.fenmu,self.fenzi)
def __div__(self,other):
return self*(~other)
while True:print eval(raw_input('eval:'))
支持分数的加(+)减(-)乘(*)除(/),取倒数(~)
支持小数化分数.
示例:eval:F(2.8,22)
输出结果为7/55
相关阅读 更多 +










