Python编程:使用decimal定点数计算0.1+0.2

简介: Python编程:使用decimal定点数计算0.1+0.2

浮点型加法

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之后也不准确,
  • 比较好的方法是通过传入字符串做计算

参考

  1. decimal — Decimal fixed point and floating point arithmetic¶
  2. decimal模块
相关文章
|
Python
Python 中 decimal 模块的用法教程
Python 中 decimal 模块的用法教程
333 0
python——数学模块( decimal 模块)
python——数学模块( decimal 模块)
|
Python
第38天:Python decimal 模块
第38天:Python decimal 模块
212 0
|
3月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
316 102
|
3月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
345 104
|
3月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
274 103
|
3月前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
206 82
|
2月前
|
Python
Python编程:运算符详解
本文全面详解Python各类运算符,涵盖算术、比较、逻辑、赋值、位、身份、成员运算符及优先级规则,结合实例代码与运行结果,助你深入掌握Python运算符的使用方法与应用场景。
211 3
|
2月前
|
数据处理 Python
Python编程:类型转换与输入输出
本教程介绍Python中输入输出与类型转换的基础知识,涵盖input()和print()的使用,int()、float()等类型转换方法,并通过综合示例演示数据处理、错误处理及格式化输出,助你掌握核心编程技能。
479 3
|
2月前
|
并行计算 安全 计算机视觉
Python多进程编程:用multiprocessing突破GIL限制
Python中GIL限制多线程性能,尤其在CPU密集型任务中。`multiprocessing`模块通过创建独立进程,绕过GIL,实现真正的并行计算。它支持进程池、队列、管道、共享内存和同步机制,适用于科学计算、图像处理等场景。相比多线程,多进程更适合利用多核优势,虽有较高内存开销,但能显著提升性能。合理使用进程池与通信机制,可最大化效率。
295 3