根据输入添加或减去固定值的优雅方法

时间:2016-10-06 09:31:56

标签: c# math

跟我约一分钟。

我有一个方法应该根据给定的输入添加或减去固定值。

我知道我的最大值为1.0f,最小值为0.0f。固定值为0.1f

现在,如果输入值为1.0f,则方法应减去,直到值为0f。如果输入值为0f,则该方法应添加0.1f,直到值为1.0f

0f1f的工作方法是:

void Foo(float input) {
    float step = .1f;
    for (float i=0f; i<=1f; i += step) {
        input = i;
    }
}

显然我可以使用if语句检查输入值,但是有另一种方法可以在一个方法中实现吗?我觉得我在这里错过了一个非常基本的算术运算。

2 个答案:

答案 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