Python 如何更正此舍入函数?

Python 如何更正此舍入函数?,python,Python,如何更正此舍入函数 def round_down(num, prec): uod = round(num, prec) if uod > num: return uod - 1/10^prec return uod 它引发:TypeError:不支持的操作数类型:^:“float”和“int”。^的含义与您认为的不同。改用 : ^运算符生成其参数的按位异或(异或),它必须是纯整数或长整数 另外,正如mgilson所指出的,1/10将等于Pyth

如何更正此舍入函数

def round_down(num, prec):
    uod = round(num, prec)
    if uod > num:
        return uod - 1/10^prec  
    return uod

它引发:TypeError:不支持的操作数类型:^:“float”和“int”。

^
的含义与您认为的不同。改用

:

^
运算符生成其参数的按位异或(异或),它必须是纯整数或长整数

另外,正如mgilson所指出的,
1/10
将等于Python 2.x中的
0
,因此您希望使用
1.0/10

def round_down(num, prec):
    uod = round(num, prec)
    if uod > num:
        return uod - 1.0/10 ** prec  
    return uod

^
并不是你认为它的意思。改用

:

^
运算符生成其参数的按位异或(异或),它必须是纯整数或长整数

另外,正如mgilson所指出的,
1/10
将等于Python 2.x中的
0
,因此您希望使用
1.0/10

def round_down(num, prec):
    uod = round(num, prec)
    if uod > num:
        return uod - 1.0/10 ** prec  
    return uod

给我们一个完整的函数示例,包括如何调用函数以及传递的参数。当然,您的特殊问题只是您试图使用
^
而您的意思是
**
。正如@mgilson所指出的,使用
1./10.
更安全,这样python在进行更正打印(向下舍入(8.4789,2))后使用浮点而不是整数(在这种情况下,结果将是
0
)根据需要给出8.47。我只是认为问题更严重。必须小心这些假设!给我们一个完整的函数示例,包括如何调用函数以及传递的参数。当然,您的特殊问题只是您试图使用
^
而您的意思是
**
。正如@mgilson所指出的,使用
1./10.
更安全,这样python在进行更正打印(向下舍入(8.4789,2))后使用浮点而不是整数(在这种情况下,结果将是
0
)根据需要给出8.47。我只是认为问题更严重。必须小心这些假设!还有一个小问题是,在python2.x上,
1/10
将始终是
0
谢谢,我将使用1/10,尽管我在这个程序中使用Python3。还有一个小问题是,在python2.x上,
1/10
将始终是
0
谢谢,我将使用1/10,尽管我在这个程序中使用了Python3。