オーバーフロー時に値を制限する必要があります。次のように 私はこれを実装: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