|
发表于 2019-10-19 06:44:18
|
显示全部楼层
- import re
- class kao:
- def __init__(self, fz, fm):
- self.fz = fz
- self.fm = fm
- def numChecks(self):
- if self.fm == 0:
- return '分母不能为零!'
- if self.fz == 0:
- return '0'
- else:
- return self.fz / self.fm
- def cal(self):
- result = self.numChecks()
- if 'e-' in str(result):
- return self.eNum2float(result)
- if r'e+' in str(result):
- return self.eNum2float(float(result))
- return self.repeatNum(float(result))
- def eNum2float(self, num):
- sign=''
- lst = re.findall(r'(\d+)', str(num))
- if str(num)[0]=='-':
- sign='-'
- if '+' in str(num):
- return sign+'{}{}{}'.format(lst[0], lst[1], '0' * (int(lst[2]) - len(lst[1])))
- else:
- return sign+ '0.{}{}{}'.format('0' * (int(lst[2]) - 1), lst[0], lst[1])
- def repeatNum(self, s):
- if s == int(s):
- return str(int(s))
- else:
- b, e = str(s).split(r'.')
- dtemp = re.sub(r'(\d+)(?=\1)', '', e)
- if int(e) == int(dtemp):
- return str(s)
- else:
- return '{}.({})'.format(b, dtemp)
- print(kao(-1, 214748364).cal())
- print(kao(200000000000000000000, 3).cal())
- print(kao(1, 2).cal())
- print(kao(1, 3).cal())
- print(kao(-10, 2).cal())
复制代码 |
|