c# - 有没有一种优雅的方法可以将正数转换为+1,将负数转换为-1?
问题描述
我有一个高性能组件需要将值转换为 -1、+1 或 0。
static int ToOne(double value) {
return (int)(value == 0D ? value : value / Math.Abs(value));
}
上述方法都不优雅,有没有其他方法可以做到这一点?
解决方案
您基本上重新创建了Math.Sign
:
返回一个表示数字符号的整数。
Return value Meaning
-1 value is less than zero.
0 value is equal to zero.
1 value is greater than zero.
测试代码:
Console.WriteLine(ToOne(-5));
Console.WriteLine(ToOne(-0.1));
Console.WriteLine(ToOne(0));
Console.WriteLine(ToOne(0.1));
Console.WriteLine(ToOne(5));
输出:
-1
-1
0
1
1
并与Math.Sign
:
Console.WriteLine(Math.Sign(-5));
Console.WriteLine(Math.Sign(-0.1));
Console.WriteLine(Math.Sign(0));
Console.WriteLine(Math.Sign(0.1));
Console.WriteLine(Math.Sign(5));
输出:
-1
-1
0
1
1
推荐阅读
- python - Python 计算由平行线 lat1 和 lat2 以及经线 lon1 和 lon2 界定的表面积
- reactjs - Reactjs - Firebase:取消旧请求
- python - 这个 Youtube API 响应是什么意思?
- python - 无法删除所有未被 5 删除的数字
- c++ - 抽象类,多态 C++ - 在另一个函数中调用纯虚方法
- android - NativeScript / Angular Preview 未在 Android 上重新加载
- lua - fn.id 是什么意思
- python - Python(Selenium)脚本覆盖文件
- python - Psycopg2 上下文管理器提交 SELECT 查询但不提交 UPDATE
- r - 没有找到带有 extrafont 的 GhostScript