python要求所有浮点数必须带有小数部分,python中浮点数保留两位小数怎么写
我目前正在实施一个分数等级来训练我的面向对象的程序设计(面向对象编程)技能,我遇到了一个问题。在我的类中,您可以在以下对象之间执行数学操作:分数和分数
整数和分数
分数和整数
我想把两者都加上:分数与浮动
浮点数
因为当我处理整数时,我要做的是使它们成为一个分母为一的分数,所以在操作漂浮物时,我想创建一个表示给定的漂浮物的{}。这就是我的问题所在。在
首先,理解我的分数等级所需的最低代码:类分数(对象):
def __init__(self,num,den=1,reduce=True):
#只接受整数或可转换的字符串
如果不是(type(num)==int,type(den)==int):
如果类型(数量)==字符串:
尝试:
num=int(数字)
除了值错误:
引发RuntimeError(您只能传递给分子和\
分母整数或整数可转换字符串!)
否则:
引发RuntimeError(您只能传递给分子和\
分母整数或整数可转换字符串!)
如果type(den)==str:
尝试:
den=int(den)
除了值错误:
引发RuntimeError(您只能传递给分子和\
分母整数或整数可转换字符串!)
否则:
引发RuntimeError(您只能传递给分子和\
分母整数或整数可转换字符串!)
#不接受分母为0的分数
如果den==0:
引发ZeroDivisionError(“分母不得为0")
#如果数字和兽穴都为负,则翻转两者
如果数字0和den 0:
num=abs(数字)
den=abs(数字)
#如果只有兽穴为负,则将-改为分子
elif den 0:
num *=-1
den=abs(den)
自我编号=数字
self.den=den
自我汽车是一个变量,它会告诉我们是否应该
#自动将分数减少到较低的项。当做一些
#数学,如果任何一个分数有self.auto==False,则结果
#也会有self.auto==False
self.auto=减少
如果self.auto
self.reduce()
定义float_to_fraction(f):
不应由分数的实例调用"",因为它不\
有目的地接受"自我"论点。相反,将其称为\
Fraction.float_to_fraction创建具有给定浮点数的新分数
#首先将数字变成一个字符串
f=str(f)
exp=
#如果数字有指数(乘以10的某次方
#储存起来以备后用。
如果f中的e:
#得到恩或“电子名词”
exp=f[f.index(e):]
#从字符串中切分指数
f=f[:f.index(e)]
#开始分子和分母
数量=0
den=1
#变量来检查我们是否传递了".",标记的小数部分
#编号
十进制=假
对于f中的字符:
如果夏尔!=.:
#将当前字符加到分子上
数字=字符
如果是十进制:
#如果我们在"."的右边,还会将0添加到
#保持比例的分母
den=0
#切片解析字符
f=f[1:]
if char== . :
#告诉函数我们现在要去的小数部分
#浮动。
十进制=真
#切掉"."
f=f[1:]
#解析指数,如果有的话
if exp!=:
#如果是负指数,我们应该增大分母
if exp[1]==-:
#向穴中添加与要添加的绝对值一样多的0
"-"号的右边。例如:如果exp=e-12 ,则添加12个零
den=0*int(exp[2:])
#和上面一样,但是在分子中
if exp[1]== :
num=0*int(exp[2:])
#最后,用解析后的数字和兽穴返回分数对象!
返回分数(整数,整数)
我的浮点到分数()函数100%准确地将给定的漂浮物转换为分数。但我记得在我的数学课上,有一个n位数长循环的循环小数,比如0.123123123123。或者0.(123)可以用分子=周期和{}的分数形式写:
123/999=0.(123)3/9 (=1/3)=0.(3);142857/999999 (=1/7)=0.(142857)等。在
但是在这个实现中,如果我把1/3这样的参数传递给float_to_fraction(),它会解析“0.3333333333”,这个值是有限的,返回这个分数:3333333333/1000000000000000。它是准确的,因为我给函数传递了一个有限的数!在这个函数中,如何实现一个识别循环小数的方法,这样就可以返回一个分母=10^n的分母,而不是一个分母=10^n.的分母
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。