根据输入添加或减去固定值的优雅方式
本文关键字:方式 输入 添加 | 更新日期: 2023-09-27 18:11:42
听我说一分钟。
我有一个方法,应该根据给定的输入添加或减去固定值。
我知道我的最大值是1.0f
,最小值是0.0f
。固定值为0.1f
。
现在,如果输入值是1.0f
,该方法应该减去,直到值是0f
。如果输入值为0f
,则该方法应添加0.1f
,直到值为1.0f
。
所以0f
到1f
的工作方法是:
void Foo(float input) {
float step = .1f;
for (float i=0f; i<=1f; i += step) {
input = i;
}
}
显然,我可以有一个if语句检查输入值,但有没有另一种方法来实现这在一个方法?我觉得我在这里漏掉了一个非常基本的算术运算
只是一个建议
我认为step可以根据初始值调整为正或负,并使用do-while使其第一次运行,直到达到最终值。
基于你的代码
void Foo(float input) {
float step = input == 0f ? .1f : -0.1f;
do
{
input = input + step
} while (input > 0f && input < 1.0f);
}
如果您真的想避免在步骤中使用If语句,您可以直接从输入中派生它。反过来,你可能会得到一些额外的数字错误,但由于你已经使用浮点数,这可能不是你所关心的。
void foo(float input)
{
float step = (.5f - input)/5.f;
do
{
input += step;
} while (input > 0.0f && input < 1.0f);
}
在我的机器上运行它得到
foo(1.0f) --> -7.45058e-08
foo(0.0f) --> 1