Python浮点数精度问题
小于 1 分钟
Python浮点数精度问题
decimal 十进制小数
如果需要非常精确的结果,可以使用 decimal 模块
模拟我们人日常用的十进制,可以设定精度,适合金额、账单、交易计算,和 PHP 的bc系列函数思路很接近。
底层存的是十进制数字,可以控制保留多少位小数,输出也是小数
算账、提现金额、手续费 → decimal,符合业务展示
#使用模块前,需要使用 import 引入
import decimal
a = decimal.Decimal("10.0")
b = decimal.Decimal("3")
print(10.0/3)
print(a/b)运行结果为:
3.3333333333333335
3.333333333333333333333333333fractions:分数模块
不存小数,直接存分子 / 分母,永远是精确的有理数,不存在小数舍入误差
比例、配比、概率、数学推导、比例分配演算,不想丢失任何分子分母关系
#引入 decimal 模块
from fractions import Fraction
print(10/3)
print(Fraction(10,3))运行结果为:
3.3333333333333335
10/3