我想將轉換字符串返回爲十進制,但少數行引發異常(請參閱下面的代碼)。如何解析包含電子符號的字符串爲十進制
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