如何将整数和浮点值相乘并在Rust中将结果显示为浮点值?

时间:2018-02-06 01:56:28

标签: rust

我有以下代码:

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)。如果我没有具体的答案,我不关心技术细节,什么或为什么。如何编译此代码以显示浮点结果?

1 个答案:

答案 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);
}