我有以下代码:
struct Stuff {
thing: i8
}
fn main(){
let theStuff = Stuff { thing: 1 };
println!("{}", theStuff.thing * 1.5);
}
我在编译时得到以下内容:
error[E0277]: the trait bound `i8: std::ops::Mul<{float}>` is not satisfied
--> IntFloatMultiply.rs:7:32
|
7 | println!("{}", theStuff.thing * 1.5);
| ^ no implementation for `i8 * {float}`
|
= help: the trait `std::ops::Mul<{float}>` is not implemented for `i8`
我已经阅读了其他一些帖子,其中包括一些非常好的内容(包括https://stackoverflow.com/a/44552464/1678392)。如果我没有具体的答案,我不关心技术细节,什么或为什么。如何编译此代码以显示浮点结果?
答案 0 :(得分:6)
假设您希望 1 * 1.5 的结果为浮点数,您可以使用thing
运算符将f64
投射到as
:< / p>
fn main() {
let the_stuff = Stuff { thing: 1 };
println!("{}", the_stuff.thing as f64 * 1.5);
}
这会打印1.5
。 Rust强迫您明确不同的数字类型如何交互。
假设您始终将i8
乘以1.5
,那么您可以将结果拟合为f32
返回类型:
fn main() {
let the_stuff = Stuff { thing: i8::max_value() };
println!("{}", the_stuff.thing as f32 * 1.5);
}