c# - 我需要一种优雅的方式来标准化标量(某种程度上)

标签 c# math

我有一个 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/

相关文章:

Python乘以等长的元组

群体尺度算法

c# - Entity Framework 代码首先从父级中删除一到零/一个子级

c# - 包含只读项目的 ReadOnlyCollection

java - C#.net 事件和 java

java - 证明 : why does java. lang.String.hashCode() 的实现与其文档相匹配?

mysql - MySQL 的 DIV 运算符有 CEIL 版本吗?

math - ANN中的Sigmoid函数及其导数

c# - 在 C# 中序列化和反序列化自引用对象

c# - 如何转换二进制图像并在 Repeater 中显示?