Rust 为什么即使I';你把它扔到浮子上了吗?

Rust 为什么即使I';你把它扔到浮子上了吗?,rust,Rust,下面的代码返回的是整数而不是浮点,即使函数的返回类型是f32 fn main() { let temp = 37; let degree = 'F'; let result = temp_conv(temp, degree); println!("The equivalent of {}{} is: {}", temp, degree, result); } fn temp_conv(value: u32, degree: char) -> f32 {

下面的代码返回的是整数而不是浮点,即使函数的返回类型是
f32

fn main() {
    let temp = 37;
    let degree = 'F';
    let result = temp_conv(temp, degree);

    println!("The equivalent of {}{} is: {}", temp, degree, result);
}

fn temp_conv(value: u32, degree: char) -> f32 {
    let mut temperature: f32 = 0.0;

    if degree == 'C' {
        temperature = ((value - 32) * (5 / 9)) as f32;
    } else if degree == 'F' {
        temperature = ((value * 9 / 5) + 32) as f32;
    } else {
        temperature = 0.0;
    };

    temperature
}

我希望输出是
98.6
,而只是
98

您正在对整数类型进行计算(这会导致不需要的舍入),然后将其转换为
f32

fn main() {
    let temp = 37;
    let degree = 'F';
    let result = temp_conv(temp, degree);

    println!("The equivalent of {}{} is: {}", temp, degree, result);
}

fn temp_conv(value: u32, degree: char) -> f32 {
    let mut temperature: f32 = 0.0;

    if degree == 'C' {
        temperature = ((value - 32) * (5 / 9)) as f32;
    } else if degree == 'F' {
        temperature = ((value * 9 / 5) + 32) as f32;
    } else {
        temperature = 0.0;
    };

    temperature
}
fn main(){
设温度=37;
设度='F';
让结果=温度(温度,度);
println!({}{}的等价物是:{}”,temp,degree,result);
}
fn temp_conv(值:u32,度:char)->f32{
如果度==“C”{
(值为f32-32.0)*(5.0/9.0)
}如果度数='F'{
(值为f32*9.0/5.0)+32.0
}否则{
0
}
}

你可能喜欢阅读,因为你犯的错误与codereview上的人完全相同。请注意,你的转换是从你打印的消息向后的:你说的
37F的等价物是:98
,但37°F实际上是2.8°C。你可能想要调整消息。不,正如我所说,它正在显示..我不是说你对代码的作用是错误的,我是说
println不一致。它说你把华氏温度转换成摄氏温度,但代码实际上把摄氏温度转换成华氏温度。它大概应该说
37C的等价物是98F
(假设
是要转换成的量表),这是一个真实的说法,如果有点不精确的话。如果模式匹配更好,请使用rustfmt根据社区的指导原则格式化代码。你可以在操场右上角的工具下找到它。有更好的方法吗?将每个值都写为浮点似乎不太好。我正在寻找一些标准的方法。@muhammadovai当你指
5.0
时,写
5.0
有什么不对?还是我误解了你的反对意见?你可以写
5.
,但这无疑“更好”。