在C#中,为什么此转换导致"输入字符串格式不正确".错误?

leo*_*ora 3 c# decimal type-conversion valueconverter

我有代码读取一个数字(但作为一个字符串),我试图将其转换为一个字节.

通常值在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;
    }
Run Code Online (Sandbox Code Playgroud)

当"val"变量以"-1"形式出现时,我在这一行得到一个例外:

  decimal convertedVal = Decimal.Parse(val, NumberStyles.AllowExponent | NumberStyles.AllowDecimalPoint) * 100;
Run Code Online (Sandbox Code Playgroud)

说的是:

Input string was not in a correct format.
Run Code Online (Sandbox Code Playgroud)

Chr*_*ris 5

你也需要投入一个NumberStyles.AllowLeadingSign:

decimal convertedVal = Decimal.Parse( val, NumberStyles.AllowExponent |
                                           NumberStyles.AllowDecimalPoint | 
                                           NumberStyles.AllowLeadingSign ) * 100;
Run Code Online (Sandbox Code Playgroud)