您好我可能有例如"1,1"
或"1.1"
或"1"
或""
的字符串,并且每个字符串都需要以相同的格式获取结果,因此它可以是在SQL Db中保存为数字(8,2)
var ci = CultureInfo.InvariantCulture.Clone() as CultureInfo;
prikaz.Parameters.AddWithValue("@p_ub_c", Decimal.Parse(p_ub_c.Text.Replace(',', '.') == string.Empty ? "0.00" : p_ub_c.Text, ci));
传递的字符串为:"2500,00"
,但也可以是""
或"2500.00"
这些值需要保存在sql numeric(8,2)中
当文本框p_ub_cis
为空时,字符串为0,我得到了这个:System.FormatException输入字符串的格式不正确。
有人可以帮我解决这个问题吗?
感谢您的时间
答案 0 :(得分:2)
您的问题在于以下代码片段:
p_ub_c.Text.Replace(',', '.') == string.Empty ? "0.00" : p_ub_c.Text
这表示“取我的文字并替换”,“带”。“,然后如果结果为空字符串,则使用”0.00“,否则使用”文本“。换句话说,您将丢失替换的结果。
如果你更改它以存储替换的结果并解析它,它应该解决问题。请注意有人输入例如“1,000.1”,但你最终会得到“1.000.1”,这仍然是一个无效的数字。
答案 1 :(得分:2)
您永远不会使用Replace
返回的内容,您应该按以下方式使用它:
string.IsNullOrEmpty(p_ub_c.Text) ? "0.00" : p_ub_c.Text.Replace(',', '.');