使用格式时,如何在正浮动之前强制使用'+'符号!宏?

yui*_*uiu 2 string-formatting rust

我想要由format!宏格式化的右对齐浮点数,标志始终可见.使用语法规范我设计了以下格式:

format!("{:>10+.1}", 23.3434);
Run Code Online (Sandbox Code Playgroud)

但是我得到了编译错误:

error: invalid format string: expected `'}'`, found `'+'`
 --> src/main.rs:2:21
  |
2 |     let x = format!("{:>10+.1}", 23.3434);
  |                     ^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

我正在使用Rust 1.25.0.

mca*_*ton 6

该规范清楚地给出了订单[[fill]align][sign]['#']['0'][width]:

align := '<' | '^' | '>'
sign := '+' | '-'
Run Code Online (Sandbox Code Playgroud)

因此,你不能在>和之间有一个数字+,宽度在符号之后:

format!("{:>10+.1}", 23.3434);
Run Code Online (Sandbox Code Playgroud)

这呈现为" +23.3".鉴于:

format!("{:>+010.1}", 23.3434);
Run Code Online (Sandbox Code Playgroud)

呈现为+0000023.3.

虽然为了可维护性,我建议使用

format!("{:>+0width$.prec$}", 23.3434, width=10, prec=1);
Run Code Online (Sandbox Code Playgroud)