在 C 中,您可以像这样动态地设置 printf 的宽度参数:
printf("%*.*f", width, precision, value);
这就是我希望它工作的方式:
let width = 8;
let precision = 2;
let value = 1234.56789;
println!("{:*.*}", width, precision, value);
但是使用该语法会在格式字符串中抛出预期的“}”
。
此类作品:
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);
}
关于rust - 有没有办法在 println! 中设置宽度参数!有一个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71276802/