跟我约一分钟。
我有一个方法应该根据给定的输入添加或减去固定值。
我知道我的最大值为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语句检查输入值,但是有另一种方法可以在一个方法中实现吗?我觉得我在这里错过了一个非常基本的算术运算。
答案 0 :(得分:5)
只是一个建议
我认为步骤可以根据初始值调整为正数或负数,并使用do-while使其第一次运行,直到达到最终值。
根据您的代码
void Foo(float input) {
float step = input == 0f ? .1f : -0.1f;
do
{
input = input + step
} while (input > 0f && input < 1.0f);
}
答案 1 :(得分:0)
如果你真的想避免在步骤中使用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