我想将转换字符串返回为十进制,但少数行引发异常(请参阅下面的代码)。如何解析包含电子符号的字符串为十进制
Func<DataRow, string, decimal?> getFieldNullableDecimal = (row, field) =>
{
if (!string.IsNullOrWhiteSpace((row[field] ?? string.Empty).ToString()))
{
var data = row[field].ToString();
return decimal.Parse(data); //--this line is throwing exception
}
}
时由数据库返回的值是以下形式的被抛出的错误:-2.8421709430404E-14
我想这样做的只是检查是否字符串“ E-“。然后我将数字转换两个部分,然后将它们相乘。但是,在我这样做之前,我想知道是否存在已经实现的方法。
感谢您的帮助
数据库中的数据类型是什么?理想情况下,只要避免做任何字符串操作... – 2015-03-31 15:47:39
是转换为字符串真的有必要吗?看起来好像你有来自数据库的结构化数据......要么你已经有了一个数字,在这种情况下你不必做任何事情,或者你有一些数据结构,你可能直接转换成数字(至少是我会期望在任何相对健全的DBMS API中...) – 2015-03-31 15:47:49
'decimal.Parse(“ - 2.8421709430404E-14”,System.Globalization.NumberStyles.Float);'但更好的选择是使用['SqlDataReader.GetDecimal'] (https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.getdecimal%28v=vs.110%29.aspx)方法,如果您正在与SQL Server数据库交互。 – Habib 2015-03-31 15:49:24