有没有办法在println中设置宽度参数!带有变量



在C中,您可以动态使用set printf的宽度参数,如下所示:

printf("%*.*f", width, precision, value);

这就是我希望它的工作方式:

let width = 8;
let precision = 2;
let value = 1234.56789;
println!("{:*.*}", width, precision, value);

但是使用该语法会抛出expected '}' in format string

这类作品:

let width = 8;
let precision = 2;
let value = 1234.56789;
println!("{:8.*}", precision, value);

但是正如您所看到的,宽度并不是动态设置的。我想它不起作用是因为一些好的原因。有可能以类似的方式使其工作吗?或者有什么解决办法吗?

您可以编写:

fn main() {
let width = 8;
let precision = 2;
let value = 1234.56789;
println!("{:width$.precision$}", value);
}

这避免了将要格式化的实际值与格式化参数混合,我认为这很好。

你也可以写:

fn main() {
let width = 8;
let precision = 2;
let value = 1234.56789;
println!("{:1$.2$}", value, width, precision);
}

或者:

fn main() {
let width = 8;
let precision = 2;
let value = 1234.56789;
println!("{:foo$.bar$}", value, foo = width, bar = precision);
}

最新更新