Convert.ToDecimal(float number here)
が呼び出されると、オーバーフロー例外が発生します。バイト文字列から読み取り、バイト配列を 10 進数に変換したいと考えています。
byte[] hexbyte = {45, 6, 7, 29};
float myFloat = BitConverter.ToSingle(hexbyte, 0);
//Make sure the float can be converted to decimal
if (!float.IsNaN(myFloat) ||
!float.IsInfinity(myFloat) ||
myFloat < (float)decimal.MaxValue ||
myFloat > (float)decimal.MinValue)
{
try {
myFloatD = Convert.ToDecimal(myFloat);
}
catch (Exception ex)
{
Debugger.Log(0, "1", ex.ToString());
return 0;
}
}
else
return 0;
myFloat = (float)Math.Round(myFloatD, 2); // 1 indicates the decimal places
フロートが変換に対して大きすぎる/小さすぎる/無限大であるかどうかをチェックするために制約を設定しても、コードは依然としてキャッチ例外で終了します...