Как заставить знак «+» перед положительными числами при использовании формата!макрос? - PullRequest
0 голосов
/ 25 мая 2018

Я бы хотел, чтобы выровненное по правому краю число с плавающей запятой форматировалось макросом format! с всегда видимым знаком.Используя синтаксис , я разработал следующее форматирование:

format!("{:>10+.1}", 23.3434);

Однако я получил ошибку компиляции:

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

Я использую Rust 1.25.0.

1 Ответ

0 голосов
/ 25 мая 2018

Спецификация четко дает порядок [[fill]align][sign]['#']['0'][width] с:

align := '<' | '^' | '>'
sign := '+' | '-'

Поэтому у вас не может быть числа от > до +, а ширина идет после знака:

format!("{:>10+.1}", 23.3434);

Это отображается как " +23.3".Принимая во внимание, что

format!("{:>+010.1}", 23.3434);

отображается как +0000023.3.

Хотя для удобства обслуживания я бы предложил использовать

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