我的代码读取一个数字(但以字符串形式出现),我试图将其转换为一个字节。
通常情况下,该值介于0和1之间(如.25),我的代码工作正常,但我现在遇到负值,特别是" -1"并试图弄清楚为什么这个代码正在爆炸:
public static byte GetByteVal(DataRow dataRow, string caption)
{
var val = dataRow.GetValue(caption).ToString().Trim();
if (!String.IsNullOrEmpty(val))
{
decimal convertedVal = Decimal.Parse(val, NumberStyles.AllowExponent | NumberStyles.AllowDecimalPoint) * 100;
if (convertedVal >= 0)
{
return (byte)(convertedVal);
}
else
{
return (byte)0;
}
}
return (byte)0;
}
当" val"变量以" -1"形式出现,我在这一行得到一个例外:
decimal convertedVal = Decimal.Parse(val, NumberStyles.AllowExponent | NumberStyles.AllowDecimalPoint) * 100;
说:
Input string was not in a correct format.
答案 0 :(得分:5)
您还需要投入NumberStyles.AllowLeadingSign
:
decimal convertedVal = Decimal.Parse( val, NumberStyles.AllowExponent |
NumberStyles.AllowDecimalPoint |
NumberStyles.AllowLeadingSign ) * 100;