1. 解释
python
由于 float
方法的浮点数处理精度不足导致,处理或者保存小数的时候可能出现不准准确的请款
python
的 round
在保存 两位小数时 0.125
时的 的三位是 5
的话就有可能被舍去随意需要额外方法处理
2. 代码
import decimal
# 1. 设置处理精度的方法
decimal.getcontext().rounding = decimal.ROUND_HALF_UP
# 2. 写处理小数的方法
def index(number):
"""
输入一个数 将数 保存两位小数, 并且四舍五入
:param number: 要设置的数
:return:
"""
# 1). 将数据 乘以 100 , 并且 转换为 字符串
n = str(number*100)
# 2). 保存一位 小数
n = decimal.Decimal(n).__round__(1)
# 3). 使用 Decimal 方法, 转换回原来的数据
n = n / decimal.Decimal("100")
# 4). 将数据进行处理
n = decimal.Decimal(str(n), decimal.getcontext())
# 5). 保存两位小数
return float(n.__round__(2))
# 3. 验证数据
count = 0.015
while count < 1:
r = index(count)
print(r, str(count), sep=' ----- ')
count += 0.01
3. 结果展示