gpt4 book ai didi

rust - 在 Rust 中将浮点值限制为最小/最大范围

转载 作者:行者123 更新时间:2023-12-05 00:53:39 26 4
gpt4 key购买 nike

给定一些任意浮点值,将该值限制在最小/最大范围内的惯用方法是什么? IE。如果您提供的值低于最小值,则返回最小范围值,如果您提供的值超过最大值,则返回最大范围值。否则返回原始浮点值。

我认为这种方法可行,但它没有给我正确的值:

fn main(){
dbg!(min_max(150.0, 0.0, 100.0));
//because 150.0 is greater than 100.0, should return 100.0
//currently returns 0.0
dbg!(min_max(-100.0, 0.0, 100.0));
//becuase -100.0 is below the minimum value of 0.0, should return 0.0
//currently returns 0.0
}

fn min_max(val: f32, min: f32, max: f32)->f32{
return val.max(max).min(min);
}

Playground

最佳答案

pheki 的回答解释了为什么您的尝试没有奏效,但还有一种专门用于此任务的方法:clamp .

fn main(){
dbg!(150.0_f32.clamp(0.0, 100.0)); // = 100.0
dbg!((-100.0_f32).clamp(0.0, 100.0)); // = 0.0
}

(添加的 _f32 后缀是用来告诉 Rust 我们想使用 f32 数字而不是可能的 f64 的 - 程序不会'否则编译。它们仅在这个小示例中是必需的,因为没有函数签名或任何其他指定我们要使用的类型的东西。)

关于rust - 在 Rust 中将浮点值限制为最小/最大范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67464050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com