在helm中,有数学函数https://helm.sh/docs/chart_template_guide/function_list/#math-functions,还有一个除以整数的div函数!但是有没有办法从除法中得到小数结果呢?
我需要从百分比中得到一个单位间隔。
因此,如果值是90,我需要得到0.9,如果是2,我需要0.02。
谢谢
发布于 2021-11-12 13:21:59
不幸的是,Helm模板中没有支持浮点除法的函数。
最简单的方法是注册一个执行转换和除法的自定义函数。
如果您不能注册您的自定义函数,仍有一种方法可以使用帮助模板中提供的内容进行注册。
您可以构造一个包含预期结果的浮点表示形式的字符串,并使用float64 Helm模板函数将该字符串解析为float64值。
下面是它可能的样子:
{{ printf "%d.%02d" (div . 100) (mod . 100) | float64 }}如果百分比为100,则第一个数字将为1,否则为0。然后跟一个点和百分比值的两位数,所以使用这种格式的字符串,您将获得浮点表示。将其传递给float64函数,它将对其进行解析并将其作为float64值返回。
测试:
t := template.Must(template.New("").Funcs(template.FuncMap{
"div": func(a, b int) int { return a / b },
"mod": func(a, b int) int { return a % b },
"float64": func(s string) (float64, error) { return strconv.ParseFloat(s, 64) },
}).Parse(`{{range .}}{{ printf "%d.%02d" (div . 100) (mod . 100) | float64 }}
{{end}}`))
if err := t.Execute(os.Stdout, []int{0, 2, 90, 100}); err != nil {
panic(err)
}输出(在Go Playground上尝试):
0
0.02
0.9
1https://stackoverflow.com/questions/69942424
复制相似问题