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)