我需要限制溢出值。 我实现了这个如下:C#值溢出限制
public static sbyte LimitValueToSByte(this int val)
{
if (val > sbyte.MaxValue) return sbyte.MaxValue;
if (val < sbyte.MinValue) return sbyte.MinValue;
return (sbyte)val;
}
是否有一个更优雅的方式?
这在时间关键的系统代码,因此性能是重要的。
签名零不应该成为一个问题。 – SLaks
@Slaks不带整数。但是'(-0.0).Clamp(0,1)'返回'-0',这在所有情况下都可能不是所希望的。 – CodesInChaos
我知道有符号的零,但它们在这里不会引起问题。在.Net中,“-0.0”与“0.0”无法区分。 – SLaks