В C#, почему это преобразование вызывает "Входная строка была в неправильном формате". ошибка?
У меня есть код, который читает число (но приходит в виде строки), и я пытаюсь преобразовать его в байт.
Обычно значение находится в диапазоне от 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.
1 ответ
Решение
Вам нужно будет добавить NumberStyles.AllowLeadingSign
также:
decimal convertedVal = Decimal.Parse( val, NumberStyles.AllowExponent |
NumberStyles.AllowDecimalPoint |
NumberStyles.AllowLeadingSign ) * 100;