50字范文,内容丰富有趣,生活中的好帮手!
50字范文 > python自定义加减乘除函数实现加减乘除_Python实现高精度加减乘除运算

python自定义加减乘除函数实现加减乘除_Python实现高精度加减乘除运算

时间:2018-10-04 10:52:28

相关推荐

python自定义加减乘除函数实现加减乘除_Python实现高精度加减乘除运算

Python实现高精度加减乘除运算

Mkdir700• 年 12 月 12 日

Loading...

今天实验课,要求的这个作业

## 完整代码 ##

目前完整写完了加法

```python

class High_Precision_Operation(object):

# 加法

def p_add(self, a, b):

sign = False

a_list_int, a_list_float, b_list_int, b_list_float = self.modify(a, b)

a_list_int, b_list_int = a_list_int[::-1], b_list_int[::-1]

# 整数部分相加

for i in range(len(b_list_int)-1):

a_list_int[i] = a_list_int[i] + b_list_int[i]

if a_list_int[i] >= 10:

a_list_int[i] %= 10

a_list_int[i+1] += 1

else:

a_list_int[i+1] += 0

# 小数部分相加

for i in range(len(b_list_float)-1,-1,-1):

a_list_float[i] = a_list_float[i] + b_list_float[i]

if a_list_float[i] >= 10:

a_list_float[i] %=10

a_list_float[i-1] += 1

if a_list_float[0] + b_list_float[0] >=10:

a_list_float[i] %= 10

sign = True

a_list_int = a_list_int[::-1]

num = self.int_float(a_list_int, a_list_float)

if sign == True:

num + 1

print(num)

# 减法

def p_sub(self, a, b):

sign = False

sign1 = False

# if a < b:

# a, b = b, a

# sign = True

a_list_int, a_list_float, b_list_int, b_list_float = self.modify(a, b)

a_list_int, b_list_int = a_list_int[::-1], b_list_int[::-1]

# 整数部分相减

for i in range(len(a_list_int)):

a_list_int[i] = a_list_int[i] - a_list_int[i]

if a_list_int[i] < 0:

a_list_int[i] = 10 + a_list_int[i]

a_list_int[i+1] -= 1

# 小数部分相减

for i in range(len(a_list_float)-1,-1,-1):

a_list_float[i] = a_list_float[i] - a_list_float[i]

if a_list_float[i] < 0:

a_list_float = 10 + a_list_float[i]

a_list_float[i-1] -= 1

if a_list_float[0] - b_list_float[0] < 0:

a_list_float[i] = 10 + a_list_float[i]

sign1 = True

a_list_int = a_list_int[::-1]

num = self.int_float(a_list_int, a_list_float)

if sign1 == True:

num -= 1

# if sign == True:

# print(self.list2num(a_list)-2*self.list2num(a_list))

print(num)

# 乘法

def p_multi(self,a, b):

pass

# 修正统一数字在列表中的长度

def modify(self, a, b):

# 将数字转换成字符串

a_list, b_list = '00' + str(a), '00' + str(b) # 字符串转为列表

a_list_int, a_list_float = a_list.split(".")

b_list_int, b_list_float = b_list.split(".")

a_list_int, a_list_float = self.list2int(list(a_list_int)), self.list2int(list(a_list_float)) # 将列表内的字符转为数字

b_list_int, b_list_float = self.list2int(list(b_list_int)), self.list2int(list(b_list_float)) # 将列表内的字符转为数字

# 比较两个列表的长度

a_list_int, b_list_int = self.differ_int(len(a_list_int), len(b_list_int), a_list_int, b_list_int)

a_list_float, b_list_float = self.differ_float(len(a_list_float), len(b_list_float), a_list_float, b_list_float)

print(a_list_int, a_list_float)

print(b_list_int, b_list_float)

# a_list, b_list = a_list[::-1], b_list[::-1]

return a_list_int, a_list_float, b_list_int, b_list_float

# 将两个列表对齐-整数部分

def differ_int(self, l1, l2, la, lb):

if l1 > l2:

differ = l1 - l2

lb = lb[::-1]

for i in range(differ):

lb.append(0)

lb = lb[::-1]

elif l1 < l2:

differ = l2 - l1

la = la[::-1]

for i in range(differ):

la.append(0)

la = la[::-1]

return la, lb

# 将两个列表对齐-小数部分

def differ_float(self, l1, l2, la, lb):

if l1 > l2:

differ = l1 - l2

for i in range(differ):

lb.append(0)

elif l1 < l2:

differ = l2 - l1

for i in range(differ):

la.append(0)

return la, lb

# 将列表内的数组字符转化成数字

def list2int(self, list):

for i in range(len(list)):

list[i] = int(list[i])

return list

# 将一个数字列表转换为一个int类型的数字

def list2num(self, list):

num = 0

for i in list:

num = num * 10 + i

return num

def int_float(self, int, float):

int = self.list2num(int)

length = len(float)

float = self.list2num(float)

float = float * (0.1 ** length)

return int+float

```

## 加法 ##

![Animation.gif][1]

```python

def p_add(self, a, b):

sign = False

a_list_int, a_list_float, b_list_int, b_list_float = self.modify(a, b)

a_list_int, b_list_int = a_list_int[::-1], b_list_int[::-1]

# 整数部分相加

for i in range(len(b_list_int)-1):

a_list_int[i] = a_list_int[i] + b_list_int[i]

if a_list_int[i] >= 10:

a_list_int[i] %= 10

a_list_int[i+1] += 1

else:

a_list_int[i+1] += 0

# 小数部分相加

for i in range(len(b_list_float)-1,-1,-1):

a_list_float[i] = a_list_float[i] + b_list_float[i]

if a_list_float[i] >= 10:

a_list_float[i] %=10

a_list_float[i-1] += 1

if a_list_float[0] + b_list_float[0] >=10:

a_list_float[i] %= 10

sign = True

a_list_int = a_list_int[::-1]

num = self.int_float(a_list_int, a_list_float)

if sign == True:

num + 1

print(num)

```

[1]: /usr/uploads//12/3375512611.gif

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。