以指定精度舍入和修剪数字

时间:2014-03-20 23:57:20

标签: 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_trim(x, precision=4)
y = "0.2385"

或:

x = 0.238498
y = round_and_trim(x, precision=3)
y = "0.238"

1 个答案:

答案 0 :(得分:5)

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

def round_and_trim(x, precision=2):
    return "{0:.{prec}f}".format(round(x, precision), prec=precision)

因此,当precision3时,格式字符串将基本上变为"{0:.3f}"

来自docs

  

A * format_spec *字段还可以在其中包含嵌套的替换字段。这些嵌套的替换字段只能包含字段名称;不允许使用转换标志和格式规范。 * format_spec *中的替换字段在解释* format_spec *字符串之前被替换。这允许动态指定值的格式。