Python编程:使用decimal定点数计算0.1+0.2
2023-09-14 09:07:15 时间
浮点型加法
0.1+0.2
Out[15]: 0.30000000000000004
decimal定点数加法
import decimal
decimal.Decimal(0.1) + decimal.Decimal(0.2)
Out[17]: Decimal('0.3000000000000000166533453694')
# 设置精度
decimal.getcontext().prec = 6
decimal.Decimal(0.1) + decimal.Decimal(0.2)
Out[20]: Decimal('0.300000')
decimal传入浮点型计算
from decimal import *
d1 = Decimal(0.1) + Decimal(0.2)
print(d1)
# 0.3000000000000000166533453694
d2 = Decimal.from_float(0.1) + Decimal.from_float(0.2)
print(d2)
# 0.3000000000000000166533453694
# 格式化
print(d1.quantize(Decimal("0.00"))) # 0.30
print(d2.quantize(Decimal("0.00"))) # 0.30
定点数传入字符串做计算
d3 = Decimal("0.1") + Decimal("0.2")
print(d3)
# 0.3
可以看到:
- 浮点数本身计算的时候是不准确的,
- 即便转换为decimal之后也不准确,
- 比较好的方法是通过传入
字符串
做计算
参考
相关文章
- python ModuleNotFoundError: No module named 'requests' 的 解决方案
- 失去循环标记的Python,我这样实现跳出外层循环
- Python简单计算数组元素平均值的方法示例
- python使用datetime模块计算各种时间间隔的方法
- Python实现计算圆周率π的值到任意位的方法示例
- Python实现的计算马氏距离算法示例
- 小白学 Python(24):Excel 基础操作(下)
- 小白学 Python(3):基础数据类型(下)
- Python实现Stacking回归模型(随机森林回归、极端随机树回归、AdaBoost回归、GBDT回归、决策树回归)项目实战
- 【华为机试真题 Python实现】计算矩形面积【2022 Q2 |200分】
- python之做一个文本播放器
- Python: 根据利润计算奖金
- PySpark 的背后原理--在Driver端,通过Py4j实现在Python中调用Java的方法.pyspark.executor 端一个Executor上同时运行多少个Task,就会有多少个对应的pyspark.worker进程。