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

时间:2016-01-30 03:40:06

标签: rust

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

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

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

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

2 个答案:

答案 0 :(得分:20)

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

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

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

MediaPlayer

答案 1 :(得分:17)

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

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

返回以下值:

integer division: 1
float division: 1.826086956521739