python 保存两位小数

1. 解释

  • python 由于 float 方法的浮点数处理精度不足导致,处理或者保存小数的时候可能出现不准准确的请款
  • pythonround在保存 两位小数时 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. 结果展示

python 保存两位小数