除去两个整数不会在Rust中打印为十进制数

pla*_*fhz 13 rust

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

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

但是当我明确打印十进制数字时,它可以正常工作:

fn main(){
    println!("{:.3}", 0.25648);
}
// this print 0.256
Run Code Online (Sandbox Code Playgroud)

Geo*_*ard 25

就像在C和C++中一样,除以整数会产生另一个整数.试试这个C++程序,看看:

#include <iostream>

using namespace std;

int main()
{
    cout << 22 / 7 << endl;     // 3
    cout << 22.0 / 7.0 << endl; // 3.14286
}
Run Code Online (Sandbox Code Playgroud)

类似地,在Rust中,您需要将两个数字指定为浮点数,这可以通过在数字中的任意位置放置小数来完成.试试这个Rust相当于上面的程序:

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


m00*_*0am 21

当您使用整数变量并且没有添加小数点的选项时,您可以使用as关键字将整数变量转换为浮点数:

fn main() {
    let a = 42;
    let b = 23;
    let c = a / b;  // integer division
    let d = a as f64 / b as f64;  // cast both variables to float before division
    println!("integer division: {}\nfloat division: {}", c, d);
}
Run Code Online (Sandbox Code Playgroud)

这将返回以下值:

integer division: 1
float division: 1.826086956521739
Run Code Online (Sandbox Code Playgroud)