【发布时间】:2012-11-29 10:44:15
【问题描述】:
我正在尝试将字符串解析为小数,但我不断收到 formatException
Dim row as GridViewRow
for each row in grdActieRittenActiefAlt.rows
Dim rbl as RadioButtonList = row.FindControl("tblAddAct")
'toevoegen = true
if rbl.SelectedItem.Value = true then
Dim opgaveIdent as Integer = Convert.ToInt32(grdActieRittenActiefAlt.DataKeys(row.RowIndex).Value.ToString())
Dim curOldTarief as Decimal = Convert.ToDecimal(lblCuratiefTarief.Text)
Dim curOldKorting as Decimal = Convert.ToDecimal(lblCuratiefKorting.Text)
Dim curTariefString as String = row.Cells(4).Text
Dim curKortingString as String = row.Cells(6).Text
Dim curTarief as Decimal = Convert.ToDecimal(curTariefString)
Dim curKorting as Decimal = Convert.ToDecimal(curKortingString)
lblCuratiefTarief.Text = (curOldTarief + curTarief).ToString()
lblCuratiefKorting.Text = (curOldKorting + curKorting).ToString()
end if
next row
输入是 431,25。
到目前为止,我已经尝试了以下方法:
还有其他人有什么建议吗?
【问题讨论】:
-
程序运行的文化是什么?你试过
Decimal.Parse吗? -
我无法使用替换重现您的结果 -
Convert.ToDecimal("431,25".Replace(',', '.'))导致431.25。将Decimal.Parse与文化fr-FR一起使用也可以按预期工作。 -
Decimal.Pase 给出了相同的结果。文化是 nl-NL。
-
检查您的输入字符串。确保它周围没有奇怪的字符。如果您是从 Excel/HTML 导入(在这里猜测,基于
row.Cells(4).Text),您可能会得到额外的字符。 -
我找到了解决方案,但不是最好的解决方案。数据来自数据网格。通过将网格中的边界字段更改为带有标签的模板字段并使用该标签来转换它的小数点即可。我不知道为什么,但它解决了问题......
标签: vb.net decimal comma formatexception