Python分数!
你还在为浮点运算不精确而{:10_244:} 吗?你还在因为0.0000000001 == 0而{:10_263:} 吗?
没关系!{:10_256:}
def gcd(a, b):
if b == 0:
return a
return gcd(b, a % b)
def tongfen(c, m):
f = gcd(c, m)
return c // f, m // f
class fen:
def __init__(self, child, mother):
if mother < 0:
mother = abs(mother)
child = 0 - child
self.c, self.m = tongfen(abs(child), mother)
self.c *= (child < 0) * -2 + 1
if self.m == 0:
raise ValueError("chu'shu'bu'neng'wei'ling")
def __invert__(self):
return fen(0 - self.c, self.m)
def __add__(self, other):
return fen(self.c * other.m + other.c * self.m, self.m * other.m)
def __sub__(self, other):
return self + (~other)
def __mul__(self, other):
return fen(self.c * other.c, self.m * other.m)
def __truediv__(self, other):
return fen(self.c * other.m, self.m * other.c)
def __repr__(self):
if self.m == 1:
return str(self.c)
elif self.c < self.m:
return "%d/%d"%(self.c, self.m)
else:
return "%d+%d/%d"%(self.c//self.m, self.c%self.m, self.m)
def __eq__(self, other):
return self.c == other.c and self.m == other.m
这段代码实现了一个分数类(`fen`),可以用来进行分数的运算。它解决了浮点运算不精确和比较浮点数相等的问题,让我们可以方便地进行精确的分数运算。
让我们来看一下这个分数类的使用方法吧!首先,我们可以通过调用 `fen` 类的构造函数来创建一个分数对象,构造函数接收两个参数:分子和分母。例如:
a = fen(3, 5) # 创建一个分数对象,表示 3/5
b = fen(-2, 7)# 创建一个分数对象,表示 -2/7
可以使用加号(`+`)、减号(`-`)、乘号(`*`)和除号(`/`)来进行分数的加减乘除运算。例如:
c = a + b# 分数相加
d = a - b# 分数相减
e = a * b# 分数相乘
f = a / b# 分数相除
分数对象也支持取反运算符(`~`)。例如:
g = ~a# 取反操作,相当于负数
可以使用字符串的形式来表示分数对象。例如:
print(a)# 输出:3/5
print(b)# 输出:-2/7
print(c)# 输出:11/35
print(d)# 输出:31/35
分数对象之间也可以进行相等(`==`)的比较。例如:
print(a == b)# 输出:False
print(a == fen(6, 10))# 输出:True
这样,我们就可以使用这个分数类来进行精确的分数运算了!不用再担心浮点运算不精确和比较浮点数相等的问题啦!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 raise ValueError("chu'shu'bu'neng'wei'ling") sfqxx 发表于 2023-12-14 20:53
翻译:除数不能为零{:10_256:} 实现一个分数类应该很容易实现吧,不过对于设计巨大的浮点运算很实用。 嗨,我前几天翻到一个东西,原来 Python 库已经有了:
https://blog.csdn.net/m0_75106254/article/details/128588425
@KeyError
zhangjinxuan 发表于 2023-12-19 14:56
嗨,我前几天翻到一个东西,原来 Python 库已经有了:
https://blog.csdn.net/m0_75106254/article/detail ...
这是他自己写的{:10_277:} KeyError 发表于 2023-12-19 16:38
这是他自己写的
wtf,我记得之前有啊,去哪了 KeyError 发表于 2023-12-19 16:38
这是他自己写的
from fractions import Fraction
页:
[1]