文字列値 (response.Radius) をチェックして、最も近い Int16 値 (radius) に丸めようとしています。これを行うための最もクリーンで効率的な方法は何ですか? 私は次のコードを書きましたが、これが最も効率的なソリューションであることがわかりました。私は正しいですか?
また、catch ステートメントに保存する追加のログ情報もあります。
Int16 radius; Double rDouble;
if (Double.TryParse(response.Radius, out rDouble))
{
var rRounded = Math.Round(rDouble);
if (!Int16.TryParse(rRounded.ToString(), out radius))
{
if (rRounded > Int16.MaxValue)
{
radius = Int16.MaxValue;
}
else if (rRounded < Int16.MinValue)
{
radius = Int16.MinValue;
}
//response.Radius = radius.ToString();
Logger.Info(String.Format("Received range value {0} is outside the range of SmallInt, thus it is capped to nearest value of SmallInt i.e. {2}", Int16.MaxValue, response.Radius));
}
else
{
Logger.Info("Response: Range " + response.Radius + " is not a valid number");
}
}
return response.Radius;