我有一个 float ,可以是正数或负数的任何值。
如果 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;
}
有什么建议吗?
最佳答案
使用 Math.Sign(input)
。
如果您的输入是 0.78 -> 返回 1。
如果它是 0 -> 返回 0。
如果它是 -0.78 -> 返回 -1。
关于c# - 我需要一种优雅的方式来标准化标量(某种程度上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36837908/