有時候我們會將一個小數字符串轉換為整數,例如將"31.0"轉換為整數類型,因為這個小數本來就是一個整數,它的小數位為0。
SQL Server
如果我們在SQL Server中直接將字符串'31.0'轉換為INT類型,會報錯:
DECLARE @text NVARCHAR(50)=N'31.0' SELECT CAST(@text AS INT)
結果如下:
這時,我們要先把字符串'31.0'轉換成一個SQL Server的小數類型(例如,DECIMAL或FLOAT等),再轉換為INT類型就不會報錯了:
DECLARE @text NVARCHAR(50)=N'31.0' SELECT CAST(CAST(@text AS DECIMAL(18,1)) AS INT) SELECT CAST(CAST(@text AS FLOAT) AS INT)
結果如下:
C#
同樣,如果我們在C#中直接將字符串"31.0"轉換為int類型,也會報錯:
using System; namespace NetCoreConversion { class Program { static void Main(string[] args) { string text = "31.0"; int integer = Convert.ToInt32(text); Console.WriteLine("Press any key to end..."); Console.ReadKey(); } } }
結果如下:
同樣,我們要先把字符串"31.0"轉換成一個C#的小數類型(例如,float或decimal等),再轉換為int類型就不會報錯了:
using System; namespace NetCoreConversion { class Program { static void Main(string[] args) { string text = "31.0"; float floatNumber = Convert.ToSingle(text); int integer1 = Convert.ToInt32(floatNumber); decimal decimalNumber = Convert.ToDecimal(text); int integer2 = Convert.ToInt32(decimalNumber); Console.WriteLine("Press any key to end..."); Console.ReadKey(); } } }
由此,我們可以發現,很多轉換字符串為整數的函數,不允許字符串中出現小數點,所以我們可以先把小數字符串轉換為小數類型,再轉換為整數類型。其實還有其它的辦法,例如可以用各個語言的字符串處理函數,將字符串中小數點和其后面的字符全部截取掉,這樣字符串中就只剩下整數位了,轉換函數也就不會報錯了,處理的方法很多,可以選擇合適的方法。