Rust:未知的格式特征`f`

问题描述 投票:0回答:1

我正在定义这样的浮点数

let width = (longer_lengths[0] + longer_lengths[1]) / 2.0;

宽度是

f64

然后我尝试像这样显示它

let width_text = format!("Width: {}", width);

但是这样我打印了所有的浮点小数点,我想将其限制为 2 位

let width_text = format!("Width: {:.2f}", width);

但是这样做我得到一个错误,格式特征

f
未知

我尝试这样做,但没有帮助

let width_text = format!("Width: {:.2f}", width as f64);

还有其他我忽略的事情吗?谢谢!

rust rust-cargo
1个回答
1
投票

您不需要

f
后缀:

let width_text = format!("Width: {:.2}", width as f64);

我假设您有 C/C++ 背景,在尝试使用

%f
系列函数格式化数字时需要使用
printf
。这是必要的,因为 C 函数用于处理可变数量参数的机制不包括任何类型的信息;因此,类型信息必须以另一种方式传达,以便将信息放入模板字符串中。

相比之下,Rust 的

format!
宏不需要知道表达式的类型。 Rust 处理这个问题的方式与 C 完全不同:除了要格式化的实际值之外的所有信息都是在编译时由
format_args!
准备的,它使用格式化特征而不是实际的具体类型。例如,该宏处理
f64
的方式与处理
i64
的方式没有根本不同。

© www.soinside.com 2019 - 2024. All rights reserved.