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

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

最佳答案

假设您希望 1 * 1.5 的结果是一个 float ,您可以使用 thing 转换为 f64 >作为运算符:

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

关于rust - 如何将整数和浮点值相乘并在 Rust 中将结果显示为浮点值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48634335/

相关文章:

reference - 如何为对结构的引用实现 Add 特性?

rust - 如何告诉 Rust 编译器借用已经结束?

struct - 如何通过字符串名称设置结构字段值?

rust - 为什么在不使用引用的情况下获得向量的所有权后仍然可以访问向量的元素?

rust - 如何强制联合表现得好像只有一种类型?

rust - 如何导出同名的函数和宏?

rust - 默认的通用实现中可能存在错误?

asynchronous - 使用 Rust actix-web 流式传输结果,生命周期问题

rust - 如何导入同一个 crate 的多个版本?

rust - 如何使用 Serde 在反序列化期间转换字段?