Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from math import pi, log, ceil, floor
- base = pi ** 2
- mode = input("[T]o base or [F]rom base? ")[0].upper()
- while not mode in "TF":
- mode = input("[T]o base or [F]rom base? ")[0].upper()
- if mode == "T":
- num = orig = float(input("Number: "))
- result = ""
- error = float(input("Maximum error %: ")) / 100
- if num < 0:
- result += "-"
- num = -num
- power = floor(log(num, base))
- if power < -1:
- result += "." + (-power - 1) * "0"
- while num > orig * error or power >= 0:
- mul = num // (base ** power)
- num -= mul * (base ** power)
- if power == -1:
- result += "."
- result += str(int(mul))
- power -= 1
- print(result)
- print("Error: %4.1f%%" % (100 * num / orig))
- else:
- num = input("Number: ")
- error = float(input("Maximum error %: ")) / 100
- minus = False
- if num.startswith("-"):
- num = num[1:]
- minus = True
- result = 0
- power = len(num.split(".")[0]) - 1
- for c in num:
- if c == ".":
- continue
- result += int(c) * (base ** power)
- power -= 1
- if minus:
- result = -result
- digits = -len(str(result).split(".")[0])
- while abs(round(result, digits) - result) / result > error:
- digits += 1
- result = round(result, digits)
- print(result)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement