在我的 rust 代码中,我有一个函数,它将浮点数和精度作为参数。该函数应返回格式化字符串。但是,我不确定如何以动态精度进行格式化,
fn convert(val: f32, precision: i16) -> String {
format!("{:.2}", val) // The 2 should be replaced with precision
}
// convert(1.2345, 1) -> 1.2
// convert(1.2345, 2) -> 1.23
根据文档:
有三种可能的方法可以指定所需的精度:
整数
.N
:整数本身就是精度
N
。整数或名称后跟美元符号
.N$
:使用格式参数
N
(必须是usize
(作为精度。星号
.*
:
.*
意味着此{...}
与两个格式输入相关联,而不是一个:第一个输入保存usize
精度,第二个输入保存要打印的值。请注意,在这种情况下,如果使用格式字符串{<arg>:<spec>.*}
,则<arg>
部分是指要打印的值,并且精度必须在前面的输入中<arg>
。
也就是说,您可以使用:
fn convert(val: f32, precision: usize) -> String {
format!("{:.prec$}", val, prec = precision)
}
fn main() {
println!("{}", convert(3.14, 0));
println!("{}", convert(3.14, 1));
println!("{}", convert(3.14, 2));
println!("{}", convert(3.14, 3));
}
(永久链接到操场(