Python 具有指定精度的舍入和修剪数字

Python 具有指定精度的舍入和修剪数字,python,Python,假设我有一个函数,它接受一个float,并返回一个到字符串的转换,其预定义精度为2位: def round_and_trim(x): return "{0:.2f}".format(round(x,2)) 其工作原理如下: x = 0.238498 y = round_and_trim(x) y = "0.24" 如何使此函数接受名为precision的参数,从而使用precision中的值,而不是转换为硬编码的精度值2 比如说 x = 0.238498 y = round_and_

假设我有一个函数,它接受一个
float
,并返回一个到字符串的转换,其预定义精度为
2
位:

def round_and_trim(x):
    return "{0:.2f}".format(round(x,2))
其工作原理如下:

x = 0.238498
y = round_and_trim(x)
y = "0.24"
如何使此函数接受名为
precision
的参数,从而使用
precision
中的值,而不是转换为硬编码的精度值2

比如说

x = 0.238498
y = round_and_trim(x, precision=4)
y = "0.2385"
或:


可以嵌套替换字段,例如:

def round_and_trim(x, precision=2):
    return "{0:.{prec}f}".format(round(x, precision), prec=precision)
因此,当
精度
3
时,格式字符串实际上将变成
“{0:.3f}”

从:

*format_spec*字段也可以包含嵌套的替换字段。这些嵌套替换字段只能包含字段名;不允许使用转换标志和格式规范。在解释*format\u spec*字符串之前,将替换*format\u spec*中的替换字段。这允许动态指定值的格式


有趣。Python如何知道
{}
中的某些内容何时被替换?什么时候不是呢?它的规则是什么?添加了一些额外的信息。为了与OP的代码保持一致,
round
似乎没有必要,但我不认为它会导致精度问题(除了
round
与格式说明符使用不同的位数)。
def round_and_trim(x, precision=2):
    return "{0:.{prec}f}".format(round(x, precision), prec=precision)