SQL Server和C#中無法將小數字符串直接轉換為整數類型


有時候我們會將一個小數字符串轉換為整數,例如將"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();
        }
    }
}

 

由此,我們可以發現,很多轉換字符串為整數的函數,不允許字符串中出現小數點,所以我們可以先把小數字符串轉換為小數類型,再轉換為整數類型。其實還有其它的辦法,例如可以用各個語言的字符串處理函數,將字符串中小數點和其后面的字符全部截取掉,這樣字符串中就只剩下整數位了,轉換函數也就不會報錯了,處理的方法很多,可以選擇合適的方法。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM