我需要一种优雅的方式来标准化标量(有点)

时间:2016-04-25 10:25:36

标签: c# math

我有一个浮点数,可以是正数或负数的任何值。

如果float小于1或大于-1而不是0,则需要将其舍入为1或-1。

我有一个我做过的功能,但是我觉得有一种优雅的内联方式可以做到这一点,但我不能想出一个。

[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float NormalizeScalar(float input)
{
    if ((input > -1) && (input < 1))
        return (input == 0) ? 0 : (input < 0) ? -1 : 1;
    return input;
}

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

使用Math.Sign(input)

如果您输入的是0.78 - &gt;返回1.

如果它是0 - &gt;返回0。

如果它是-0.78 - &gt;返回-1。