MST

星途 面试题库

面试题:Rust浮点数类型在函数中的应用及类型转换

编写一个Rust函数,该函数接受两个不同类型的浮点数(`f32`和`f64`)作为参数,对它们进行某种数学运算(例如求平均值),并返回结果。在函数内部,需要处理可能的类型转换问题,确保运算正确执行且不会丢失精度。请描述你如何设计这个函数以及选择特定类型转换方式的原因。
13.1万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
fn calculate_average(f32_num: f32, f64_num: f64) -> f64 {
    let f64_f32_num = f32_num as f64;
    (f64_f32_num + f64_num) / 2.0
}
  1. 设计思路
    • 函数calculate_average接受一个f32类型和一个f64类型的参数。
    • 为了确保不会丢失精度,将f32类型的参数转换为f64类型。因为f64具有更高的精度,可以容纳f32的所有值而不丢失精度。
    • 执行数学运算(这里是求平均值),由于两个操作数现在都是f64类型,运算结果也是f64类型,最后返回f64类型的结果。
  2. 选择类型转换方式的原因
    • 使用as关键字将f32转换为f64。这种转换方式简单直接,并且在这种情况下是安全的,因为f64的表示范围和精度都大于f32,所以不会丢失任何信息。如果反过来将f64转换为f32,则可能会丢失精度,导致结果不准确。