rust - 有没有办法在 println! 中设置宽度参数!有一个变量?

标签 rust format printf

在 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/

相关文章:

struct - 添加到 struct/impl 的生命周期使模块无法解析

sas - Proc 格式变量格式未显示

formatting - 有没有办法漂亮地格式化或美化 NSIS 脚本源代码?

c++ - printf 末尾的不需要的字符

string - 如何使用Box <String>作为具有&str键的 HashMap 的查找键?

rust - 无法在 MacOS 上编译简单的 Rust 程序

c++ - 如何在 JSON 中标记对象的继承?

c - 在 C 中打印字符串时出现无法解释的行为

c - 在 C 中定义和打印字符串变量的正确格式是什么?

windows - 来自环境变量的 Rocket 端口覆盖在 Windows 中不起作用