server sql 无法从long转为int_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类型,也会报错:

usingSystem;namespaceNetCoreConversion

{classProgram

{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类型就不会报错了:

usingSystem;namespaceNetCoreConversion

{classProgram

{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();

}

}

}

由此,我们可以发现,很多转换字符串为整数的函数,不允许字符串中出现小数点,所以我们可以先把小数字符串转换为小数类型,再转换为整数类型。其实还有其它的办法,例如可以用各个语言的字符串处理函数,将字符串中小数点和其后面的字符全部截取掉,这样字符串中就只剩下整数位了,转换函数也就不会报错了,处理的方法很多,可以选择合适的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值