按给定精度舍入浮点数

Round a floating point number by a given precision

我需要通过指定的 precision 获取 qty 号码,如下所示:

qty = 0.1284
precision = 0.01
output = 0.12

好像很简单,买我没搞定,因为我有一个precision上面的变量

浮动数学不精确 - 请参阅 Is floating point math broken?

您可以使用 round() 进行舍入 - 虽然您似乎想要截断 - 您可以用数学方法做到这一点:

qty = 0.1284
precision = 0.01 

truncated = ((qty * (1/precision)) // 1 ) * precision

print(truncated)

输出:

0.12

这会将您的数字与正确的因子相乘,整数除以 1 以去除剩余的部分数字,然后再次乘以精度以返回您的浮点值。

我是这样操作的。

def get_qty(qty, step_size):

    prec = 0
    if(step_size >= 1):
        return int(qty)
    while(step_size < 1):
        step_size *= 10
        prec += 1
    qty = "{:0.0{}f}".format(qty, prec)
    return float(qty)
get_qty(181.1231231221, 0.01)
get_qty(181.1231231221, 1.0)