|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
作为新鱼油,你是否也为python的浮点数运算结果所困扰?
0.1+0.2=0.300000004?!
0.1+0.2!=0.3?!!!
这个以decimal模块为核心的浮点数计算器可以完美地解决类似的问题
让python像人类一样计算小数!
代码如下:
- from decimal import Decimal, getcontext, InvalidOperation
- # Increase precision for calculations
- getcontext().prec = 28
- def to_decimal(value):
- return Decimal(str(value))
- def add(a, b):
- return to_decimal(a) + to_decimal(b)
- def subtract(a, b):
- return to_decimal(a) - to_decimal(b)
- def multiply(a, b):
- return to_decimal(a) * to_decimal(b)
- def divide(a, b):
- if to_decimal(b) == 0:
- raise ValueError("Division by zero is not allowed.")
- return to_decimal(a) / to_decimal(b)
- if __name__ == "__main__":
- print("=" * 50)
- print("Precise Decimal Calculator")
- print("=" * 50)
- print("Enter float-point numbers to calculate their sum.")
- print("Type 'done' when finished.\n")
- numbers = []
-
- while True:
- try:
- user_input = input("Enter a number (or 'done' to finish): ").strip()
-
- if user_input.lower() == 'done':
- if not numbers:
- print("No numbers entered. Please enter at least one number.")
- continue
- break
-
- # Convert input to Decimal
- number = to_decimal(user_input)
- numbers.append(number)
- print(f" Added: {number}")
-
- except (ValueError, TypeError, InvalidOperation):
- print(f" ❌ Invalid input: '{user_input}'. Please enter a valid number.")
- continue
-
- result = Decimal('0')
- for value in numbers:
- result += value
-
- print("\n" + "=" * 50)
- print(f"Numbers entered: {', '.join(str(n) for n in numbers)}")
- print(f"Sum = {result}")
- print("=" * 50)
- print("\nThanks for using the Precise Decimal Calculator!")
复制代码
也可以访问github,直接搜我即可
多谢各位鱼油支持~ |
|