我正在学习Rust,但当我打印十进制数时,只打印整数部分,而不打印小数部分:

fn main(){
    println!("{:.3}", 22/7);
}
// This only show 3

但当我显式打印十进制数时,它工作正常:

fn main(){
    println!("{:.3}", 0.25648);
}
// this print 0.256

推荐答案

就像C和C++一样,把整数除以另一个整数.试试这个C++程序,看看:

#include <iostream>

using namespace std;

int main()
{
    cout << 22 / 7 << endl;            // 3
    cout << 22.0 / 7.0 << endl;        // 3.14286
}

类似地,在Rust中,您需要将两个数字都指定为浮点数,这是通过在数字的任意位置放置一个小数来实现的.try 上述程序的等效程序:

fn main() {
    println!("{:.3}", 22 / 7);         // 3
    println!("{:.3}", 22.0 / 7.0);     // 3.143
}

如果你有变量,你可以根据你的需要将as转换成f32f64:

fn main() {
    let x = 22;
    println!("{:.3}", x / 7);          // 3
    println!("{:.3}", x as f32 / 7.0); // 3.143
}

Rust相关问答推荐

为什么单元类型(空元组)实现了`Extend`trait?

如何处理动态 struct 实例化?

是否有可能同时避免不兼容的不透明类型和代码重复?

默认特征实现中的生命周期问题

在自定义序列化程序中复制serde(With)的行为

Rust函数的返回值不能引用局部变量或临时变量

为什么&;mut buf[0..buf.len()]会触发一个可变/不可变的borrow 错误?

对reqwest提供的这种嵌套JSON struct 进行反序列化

为什么AsyncRead在Box上的实现有一个Unpin特征绑定?

使用 pyo3 将 Rust 转换为 Python 自定义类型

go 重并堆积MPSC通道消息

为什么这段 Rust 代码会在没有递归或循环的情况下导致堆栈溢出?

在 Bevy 项目中为 TextureAtlas 精灵实施 NearestNeighbor 的正确方法是什么?

为什么不可变特征的实现可以是可变的?

无法理解 Rust 对临时值的不可变和可变引用是如何被删除的

If let expression within .iter().any

TcpStream::connect - 匹配武器具有不兼容的类型

`if let` 只是另一种编写其他 `if` 语句的方式吗?

Rust 生命周期:不能在方法内重新borrow 可变字段

在传输不可复制的值时实现就地枚举修改