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(); } } }
由此,我们可以发现,很多转换字符串为整数的函数,不允许字符串中出现小数点,所以我们可以先把小数字符串转换为小数类型,再转换为整数类型。其实还有其它的办法,例如可以用各个语言的字符串处理函数,将字符串中小数点和其后面的字符全部截取掉,这样字符串中就只剩下整数位了,转换函数也就不会报错了,处理的方法很多,可以选择合适的方法。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架